在Python中查找可以被删除的最小子列表的长度以使总和可被k整除的程序
假设我们有一个包含正值的列表,称为nums,并且还有一个正数k。我们必须找到可以从nums中删除的最短子列表(可能为空)的长度,使得剩余元素的总和可以被k整除。但是我们不能删除整个列表。如果没有要删除的子列表,则返回-1。
因此,如果输入类似于nums=[5,8,6,3]k=8,那么输出将为1,因为[5,8,6,3]的当前元素之和为22。如果我们删除长度为1的子列表[6],则sum为16,可被8整除。
示例
让我们看看以下实现以获得更好的理解-
def solve(nums, k):
rem = (sum(nums) + k) % k
if rem == 0:
return 0
n, presum = len(nums), 0
mp = {0: -1}
res = n
for i in range(n):
presum += nums[i]
m = (presum + k) % k
mp[m] = i
if (m - rem + k) % k in mp:
res = min(res, i - mp[(m - rem + k) % k])
return res if res != n else -1
nums = [5,8,6,3]
k = 8
print(solve(nums, k))输入
[5,8,6,3], 8输出结果
1
热门推荐
10 祝贺开业文案祝福语简短
11 医生节蛋糕祝福语简短
12 很暧昧的简短祝福语
13 想念老公生日祝福语简短
14 团队文案祝福语简短励志
15 弟弟生日祝福语简短的话
16 春季祝福语女生文案简短
17 好兄弟订婚祝福语简短
18 对离岗同事祝福语简短