python - 查找总和大于 50 的最短子列表

标签 python list

我有一个列表,我想找到总和大于 50 的最短子列表。 例如我的列表是

[8.4 , 10.3 , 12.9 , 8.2 , 13.7 , 11.2 , 11.3 ,10.4 , 4.2 , 3.3 , 4.0 , 2.1]

我想找到最短的子列表,使其总和大于 50。

输出应类似于[12.9、13.7、11.2、11.3、10.4]

最佳答案

这是一个糟糕的解决方案(就没有进行所有图形搜索并找到最佳值而言),但解决方案是正确的

lis =[8.4 , 10.3 , 12.9 , 8.2 , 13.7 , 11.2 , 11.3 ,10.4 , 4.2 , 3.3 , 4.0 , 2.1] 


from collections import defaultdict
dic = defaultdict(list)

for i in range(len(lis)):
    dic[lis[i]]+=[i]

tmp_lis = lis.copy()
tmp_lis.sort(reverse=True)

res =[]
for  i in tmp_lis:
    if sum(res)>50 :
        break
    else:
        res.append(i)

res1 = [(i,dic[i]) for i in res]

res1.sort(key=lambda x:x[1])
solution =[i[0] for i in res1]

输出

[12.9, 13.7, 11.2, 11.3, 10.4]

关于python - 查找总和大于 50 的最短子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56075876/

相关文章:

c# - 如何在 C# 中将字典(以数组作为值)转换为列表

Python 创建一个程序来执行和分析类(class)的最终成绩

python - count() 的奇怪执行时间

Python ejabberd Auth 脚本不响应数据库中的更改

python - Pandas,获取数据框列中单个值的计数

python - 使用 WebStorm 安装 Python 插件

python - 添加两个列表的字符串并将其存储在新列表中

python - Flask request.args.get 没有获取所有参数(Python)

python - 在python matplotlib中将轴添加到colorbar

list - 模拟 Length 函数以获取列表的长度