用 Python 编写程序,找出建造 k 座相同高度塔所需的最少砖块数量
pythonserver side programmingprogramming
假设我们有一个塔高列表和一个正值 k。我们想选择 k 座塔,并通过添加更多砖块使它们都具有相同的高度,但使用的砖块尽可能少。我们必须找到选择 k 座塔并使它们高度相同的最少砖块数量。
因此,如果输入为 heights = [4, 7, 31, 14, 40] k = 3,则输出将为 17,因为我们可以选择 5、8 和 15,这需要 17 块砖才能达到相同的高度。
为了解决这个问题,我们将遵循以下步骤 −
- 对高度列表进行排序
- ans := infinity
- s := 0
- 对于高度中的每个索引 i 和值 x,执行
- s := s + x
- 如果 i >= k,则
- s := s - heights[i - k]
- 如果 i >= k - 1,则
- ans := ans 和 (x * k - s) 的最小值
- 返回 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

