Algorithm 包含元素N的最短子列表,总长度为>;闵

Algorithm 包含元素N的最短子列表,总长度为>;闵,algorithm,optimization,sublist,Algorithm,Optimization,Sublist,例如: 给定一个随机数列表[1,5,1,1,3,10,5,4,2,1],测试元素N=10,索引5和MIN=20 最短的子列表包括10和total>20,显然是[3,10,5,4]列表,其中total=22和size=4 问题: 什么是一个算法,以找到这样的子列表在一个有效的方式 编辑: 可能存在满足“最短”条件的不同子列表[10,5,4,2]与[3,10,5,4]一样短,也是一个有效的结果 此问题中的“子列表”是原始列表中连续的项目块[5,10,5,4]不是有效的子列表(我将其称为子集) 以下算

例如:

给定一个随机数列表
[1,5,1,1,3,10,5,4,2,1]
,测试元素
N=10,索引5
MIN=20

最短的子列表包括
10
total>20
,显然是
[3,10,5,4]
列表,其中
total=22
size=4

问题:

什么是一个算法,以找到这样的子列表在一个有效的方式

编辑:

  • 可能存在满足“最短”条件的不同子列表
    [10,5,4,2]
    [3,10,5,4]
    一样短,也是一个有效的结果

  • 此问题中的“子列表”是原始列表中连续的项目块<代码>[5,10,5,4]不是有效的子列表(我将其称为子集)


  • 以下算法应为O(n):

    从测试元素开始,向左添加元素,直到总和>=min。这给出了子列表长度l的第一个猜测(从索引i开始)。如果您可以将子列表缩短一(在右侧,即减少长度l)而不小于最小值,则在每个步骤(直到您到达测试元素)和每个步骤测试中,不增加长度l的子列表的开始索引i


    注意边缘情况:左侧的总和不够大或总和不够大。

    以下算法应为O(n):

    从测试元素开始,向左添加元素,直到总和>=min。这给出了子列表长度l的第一个猜测(从索引i开始)。如果您可以将子列表缩短一(在右侧,即减少长度l)而不小于最小值,则在每个步骤(直到您到达测试元素)和每个步骤测试中,不增加长度l的子列表的开始索引i


    注意边缘情况:左边的总和不够大或总和不够大。

    查找最短子列表>最大值与查找最短子列表相同查找最短子列表>最大值与查找最短子列表相同如何处理关系?例如,[10,5,4,2]是相同的长度,并且总和大于20。Oha!事实上,我不希望我的例子有联系:D。然而,我只需要知道列表的大小,而不需要知道它的实际内容。谢谢你的评论。金额是否最小有关系吗?带[10,5,5,4]的列表与您和Jerry的列表一样短,但有更高的总和。总和不重要,重要的是项目的顺序<代码>[10,5,5,4]不是有效的子列表。我将更新问题。您希望如何处理领带?例如,[10,5,4,2]是相同的长度,并且总和大于20。Oha!事实上,我不希望我的例子有联系:D。然而,我只需要知道列表的大小,而不需要知道它的实际内容。谢谢你的评论。金额是否最小有关系吗?带[10,5,5,4]的列表与您和Jerry的列表一样短,但有更高的总和。总和不重要,重要的是项目的顺序<代码>[10,5,5,4]不是有效的子列表。我会更新这个问题。(为什么他们要删除他们的答案?)我已经自己找到了你的方法。我发现它太复杂了,所以我开始问这个问题。(为什么他们要删除他们的答案?)我已经自己找到了你的方法。我觉得太复杂了,所以我开始问这个问题。