程序查找在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
    猜你喜欢