Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm tổng lớn nhất của các phần tử không liền kề của một danh sách bằng Python

Giả sử chúng ta có một danh sách các số được gọi là num, chúng ta sẽ định nghĩa một hàm trả về tổng lớn nhất của các số không liền kề. Ở đây các con số có thể là 0 hoặc âm.

Vì vậy, nếu đầu vào là [3, 5, 7, 3, 6], thì đầu ra sẽ là 16, vì chúng ta có thể lấy 3, 7 và 6 để lấy 16.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau−

  • nếu kích thước của nums <=2, thì

    • trả về số lượng tối đa

  • noTake:=0

  • lấy:=nums [0]

  • đối với tôi trong phạm vi từ 1 đến kích thước của nums, hãy thực hiện

    • lấy:=noTake + nums [i]

    • noTake:=tối đa noTake and take

  • trả lại tối đa noTake and take

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

[3, 5, 7, 3, 6]

Đầu ra

16