用Python编写程序以查找其总和至少为目标值的最小子列表的大小
假设我们有一个称为nums的数字列表和一个称为目标的另一个输入,则我们必须找到长度最短的子列表,其总和值与目标值相同或更大。如果没有这样的子列表,则返回-1。
因此,如果输入是nums = [2, 11,-4, 17, 4],目标= 19,则输出将为2,因为我们可以选择[17,4]以获得至少19的总和。
要解决这个问题,我们将按照以下步骤执行-
- ps:一个只有一个元素0的列表
-
对于nums中的每个num,执行以下操作
- 将(ps的最后一个元素+ num)插入ps之后
-
如果num≥目标,则
- 返回1
- min_size:inf
-
q:[0]
-
j:0
-
对于ps的范围从1到size的i,执行以下操作:
- j = j和q的大小-1的最小值
- 当j
- min_size = min(min_size和(i-q[j]))
-
j = j + 1
-
当q存在且ps[i] <= ps [q的最后一个元素]时,执行以下操作:
-
从q中删除最后一个元素
-
在q的末尾插入i
- j = j和q的大小-1的最小值
-
如果min_size
示例
让我们查看以下实现以更好地理解-