在Python中查找大小至少为2的子列表,其总和为k的倍数
假设我们有一个名为nums的非负数列表和另一个正值k。我们必须查找是否存在长度至少为2的子列表,其总和是k的倍数。
因此,如果输入内容为nums = [12,6,3,4] k = 5,则输出将是True,因为子列表[12,3]之和为15,可被5整除。
为了解决这个问题,我们将遵循以下步骤:
- 合计:= 0
- m:=一个新映射
- m [0]:=-1
- for i 在范围0到nums的大小循环执行以下操作:
- 合计:= sum + nums[i]
- 合计:= 合计 mod k
- 如果总和出现在m中,则
- 如果i-m [sum] > = 2,则
- 返回True
- 否则,
- m [sum]: = i
- 返回False
看以下实现以更好地理解-
更多Python相关文章,请阅读:Python 教程
示例
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