Python程序:查找大小至少为2且和为k的倍数的子列表
假设我们有一个非负数列表,称为nums,以及另一个正值k。我们必须检查是否存在任何长度至少为2的子列表,其和是k的倍数。
因此,如果输入类似于nums = [12, 6, 3, 4] k = 5,则输出将为True,因为子列表[12, 3]的和为15,可以被5整除。
为了解决这个问题,我们将遵循以下步骤:
- sum := 0
- m := 一个新的映射
- m[0] := -1
- 对于范围从0到nums大小的i,执行以下操作:
- sum := sum + nums[i]
- sum := sum mod k
- 如果sum存在于m中,则:
- 如果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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP