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

Chương trình tìm tổng của danh sách con K lớn nhất trong Python

Giả sử chúng ta có một danh sách các số được gọi là num và một giá trị khác k, đại diện cho một danh sách lớn các num được nối k lần. Chúng ta phải tìm tổng của danh sách con liền kề với tổng lớn nhất.

Vì vậy, nếu đầu vào là nums =[1, 3, 4, -5], k =1, thì đầu ra sẽ là 11, vì chúng ta có thể lấy danh sách con như [2, 4, 5]

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

  • s:=ans:=lo:=0
  • đối với tất cả giá trị trong phạm vi từ 0 đến nhỏ nhất của k và 2, hãy thực hiện
    • đối với mỗi x trong nums, thực hiện
      • s:=s + x
      • lo:=tối thiểu lo, s
      • ans:=tối đa ans, s - lo
  • trả về ans + tối đa là 0 và tổng tất cả các phần tử của num * tối đa là 0 và (k - 2)

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, k):
      s = ans = lo = 0
      for _ in range(min(k, 2)):
         for x in nums:
            s += x
            lo = min(lo, s)
         ans = max(ans, s - lo)
      return ans + max(0, sum(nums)) * max(0, (k - 2))
ob = Solution()
nums = [2, 4, 5, -4]
k = 1
print(ob.solve(nums, k))

Đầu vào

[2, 4, 5, -4], 1

Đầu ra

11