假设我们有一个称为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