程序查找大小至少为2的子列表,该子列表的和在Python中为k的倍数

假设我们有一个称为nums的非负数和另一个正数k的列表。我们必须检查是否存在长度至少为2的子列表,且其总和为k的倍数。

因此,如果输入像nums = [12,6,3,4] k = 5,则输出将为True,因为子列表为[12,3]的总和为15,可以被5整除。

为了解决这个问题,我们将遵循以下步骤-

  • 和:= 0

  • m:=新映射

  • m [0]:= -1

  • 对于范围从0到nums的i,执行

    • m [sum]:= i

    • 如果i-m [sum]> = 2,则

    • 返回True

    • sum:= sum + nums [i]

    • sum:= sum mod k

    • 如果总和存在于m中,则

    • 除此以外,

    • 返回False

    让我们看下面的实现以更好地理解-

    示例

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

    输入项

    [12, 6, 3, 4], 5

    输出结果

    True