程序查找在Python中制作k个相同高度的塔所需的最小砖块数
假设我们有一个塔高的列表和一个正值k。我们希望选择k个塔,并通过添加更多的砖块使它们都具有相同的高度,但要使用尽可能少的砖块。我们必须找到挑选k个塔并使它们具有相同高度所需的最少数量的砖。
因此,如果输入像heights=[4、7、31、14、40]k=3,则输出将为17,因为我们可以选择5、8和15,这需要17块砖才能达到相同的高度。
为了解决这个问题,我们将遵循以下步骤-
排序列表高度
ans:=无限
s:=0
对于每个索引i和值x的高度,执行
ans:=ans和(x*k-s)的最小值
s:=s-高度[i-k]
s:=s+x
如果i>=k,则
如果i>=k-1,则
返回ans
让我们看下面的实现以更好地理解-
示例
class Solution:
def solve(self, heights, k): heights.sort()
ans = float("inf")
s = 0
for i, x in enumerate(heights):
s += x
if i >= k:
s -= heights[i - k]
if i >= k - 1:
ans = min(ans, x * k - s)
return ans
ob = Solution()heights = [5, 8, 32, 15, 41]
k = 3
print(ob.solve(heights, k))输入项
[5, 8, 32, 15, 41], 3
输出结果
17