程序查找在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