程序查找最小子列表的大小,该子列表的总和至少是Python中的目标
假设我们有一个称为nums的数字列表,另一个名为target的输入,我们必须找到最短子列表的大小,以使其总和等于target或更大。如果没有这样的子列表,则返回-1。
因此,如果输入类似于nums=[2,11,-4,17,4]target=19,则输出将为2,因为我们可以选择[17,4]以获得至少19的总和。
在线示例
让我们看下面的实现以更好地理解-
class Solution:
def solve(self, nums, target):
ps = [0]
for num in nums:
ps += [ps[-1] + num]
if num >= target:
return 1
min_size = float("inf")
q = [0]
j = 0
for i in range(1, len(ps)):
j = min(j, len(q) - 1)
while j < len(q) and ps[i] - ps[q[j]] >= target:
min_size = min(min_size, i - q[j])
j += 1
while q and ps[i] <= ps[q[-1]]:
q.pop()
q.append(i)
return min_size if min_size < float("inf") else -1
ob = Solution()
nums = [2, 11, -4, 17, 4]
target = 19
print(ob.solve(nums, target))输入值
[2, 11, -4, 17, 4], 19输出结果
2
热门推荐
3 祝福语简短的微信
9 简短元宵节祝福语
10 闺蜜小孩祝福语简短
11 给孩子开学祝福语简短
12 生日祝福语陌生女生简短
13 广场周年庆祝福语 简短
14 放假假期祝福语简短精辟
15 送教授贺卡祝福语简短
16 20春节祝福语大全简短
17 新年祝福语简短的感谢
18 简短的古文春节祝福语