用 Python 编写程序,查找大小至少为 2 且和为 k 的倍数的子列表
pythonserver side programmingprogramming
假设我们有一个名为 nums 的非负数列表和另一个正值 k。我们必须检查是否存在长度至少为 2 的子列表,其和是否为 k 的倍数。
因此,如果输入为 nums = [12, 6, 3, 4] k = 5,则输出将为 True,因为子列表为 [12, 3],总和为 15,可被 5 整除。
要解决这个问题,我们将遵循以下步骤 −
- sum := 0
- m := a new map
- m[0] := -1
- 对于范围从 0 到 nums 大小的 i,执行
- sum := sum + nums[i]
- sum := sum mod k
- 如果 m 中存在 sum,则
- 如果 i - m[sum] >= 2,则
- 返回 True
- 如果 i - m[sum] >= 2,则
- 否则,
- m[sum] := i
- 返回 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

