程序查找大小至少为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