在Python中查找使k个塔具有相同高度所需的最小砖块数的程序

在Python中查找使k个塔具有相同高度所需的最小砖块数的程序

假设我们有一个塔高度列表和一个正值k。我们想选择k个塔并通过添加更多的砖块使它们高度相同,但使用尽可能少的砖块。我们必须找出选择k个塔并使它们高度相同所需的最小砖块数。

因此,如果输入为heights = [4、7、31、14、40]和k = 3,则输出将为17,因为我们可以选择5、8和15,需要17个砖块使它们具有相同的高度。

为了解决这个问题,我们将执行以下步骤 –

  • 对高度列表进行排序
  • ans := 无穷大
  • s := 0
  • 对于heights中的每个索引i和值x,执行以下操作 –
    • s := s + x
    • 如果i> = k,则
      • s = s – heights[i – k]
    • 如果i> = k – 1,则
      • ans := ans和(x * k – s)的最小值
  • 返回ans

让我们看看以下实现,以获得更好的理解 –

更多Python相关文章,请阅读:Python 教程

示例

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教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程