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

Chương trình tìm danh sách con có kích thước ít nhất là 2 có tổng là bội số của k trong Python

Giả sử chúng ta có một danh sách các số không âm được gọi là num và một giá trị dương khác là k. Chúng ta phải kiểm tra xem có danh sách con nào có độ dài ít nhất là 2 mà tổng của nó là bội số của k hay không.

Vì vậy, nếu đầu vào là nums =[12, 6, 3, 4] k =5, thì đầu ra sẽ là Đúng, vì danh sách con là [12, 3] tổng là 15 chia hết cho 5.

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

  • sum:=0
  • m:=một bản đồ mới
  • m [0]:=-1
  • đối với tôi trong phạm vi từ 0 đến kích thước là num, hãy thực hiện
    • sum:=sum + nums [i]
    • sum:=sum mod k
    • nếu tổng có mặt bằng m, thì
      • nếu i - m [sum]> =2, thì
        • trả về True
    • nếu không,
      • m [sum]:=i
  • trả về Sai

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):
      sum = 0
      m = {}
      m[0] = -1
      for i in range(0, len(nums)):
         sum += nums[i]
         sum %= k
         if sum in m:
            if i - m[sum] >= 2:
               return True
         else:
            m[sum] = i
      return False
ob = Solution()
nums = [12, 6, 3, 4]
k = 5
print(ob.solve(nums, k))

Đầu vào

[12, 6, 3, 4], 5

Đầu ra

True