สมมติว่าเรามีรายการของตัวเลขที่เรียกว่า nums เราจะกำหนดฟังก์ชันที่ส่งกลับผลรวมที่ใหญ่ที่สุดของตัวเลขที่ไม่อยู่ติดกัน ที่นี่ตัวเลขสามารถเป็น 0 หรือติดลบ
ดังนั้น หากอินพุตเป็นแบบ [3, 5, 7, 3, 6] ผลลัพธ์จะเป็น 16 เนื่องจากเราสามารถเอา 3, 7 และ 6 เพื่อให้ได้ 16
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้-
-
ถ้าขนาดของ nums <=2 แล้ว
-
คืนค่าสูงสุดของ nums
-
-
noTake :=0
-
เทค :=nums[0]
-
สำหรับฉันในช่วง 1 ถึงขนาดของ nums ทำ
-
เทค :=noTake + nums[i]
-
noTake :=สูงสุดของ noTake และรับ
-
-
ส่งคืนสูงสุดของ noTake และรับ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, nums): if len(nums) <= 2: return max(nums) noTake = 0 take = nums[0] for i in range(1, len(nums)): take, noTake = noTake + nums[i], max(noTake, take) return max(noTake, take) ob = Solution() nums = [3, 5, 7, 3, 6] print(ob.solve(nums))
อินพุต
[3, 5, 7, 3, 6]
ผลลัพธ์
16