python - 使用python以最佳方式查找列表的最小总和
问题描述
我试图解决编码挑战,其中指出:
给定一个列表“L”和替换数量“k”。
第 1 步:在第 1 次迭代中,从“L”中找到任意数字,将其减半,然后通过四舍五入将其替换为整数。第 2 步:重复第 1 步进行“k”这样的操作,最终我们得到minimum sum
列表“L”中所有元素的第一个。
例子:
L=[1,2,2,3] k=4
[1,2,2,2] replaced 3 by 2 ( round(3/2)=2)
[1,2,2,1] replaced 2 by 1
[1,2,1,1] replaced 2 by 1
[1,1,1,1] replaced 2 by 1
所以总和是 4 和它的最小值。注意:数组可能未排序。
我尝试了这种方法:
def fun(L,k):
for i in range(k):
L.sort()
num=round(L[-1]/2)
L[-1]=num
return sum(L)
由于时间复杂性,这种方法显示“超时”。
有没有最佳的方法来解决这个问题。
解决方案
尝试这个:
nums = [1,2,3,4]
def fun(L, K):
return sum([round(i/2) for i in L])
print(fun(nums, 4))
如果您对此语法感到困惑,请参阅列表推导。
推荐阅读
- python - 列出理解以及如何将其与 pandas 一起使用
- linux - C Shell bug 的问题:localpath:未定义的变量
- r - 计算数据框的日期列之间的差异
- python - 将特定范围的颜色更改为 CV2 或 PIL 中的另一种颜色
- google-apps-script - Google Apps 脚本 indexOf 日期不起作用?
- python - 编写函数,接受输入(职业)并返回输出(饮料类型)
- abp - ABP 缺少 LIBS 目录
- c# - 使用 Entity Framework Core 排序保存
- c# - 当我第二次按下按钮时,如果 C# 中的语句使文本框恢复正常
- ansible - 如何将参数从 Ansible Tower Survey 而不是配置文件传递给清单脚本