程序查找大小至少为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:=summodk
如果总和存在于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