Python程式:查詢構建k個相同高度塔樓所需的最小磚塊數
假設我們有一列塔的高度,以及一個正值k。我們想要選擇k個塔,透過新增更多的磚塊使它們的高度相同,但要儘可能少地使用磚塊。我們必須找到使k個塔的高度相同所需的最小磚塊數。
因此,如果輸入類似於heights = [4, 7, 31, 14, 40] k = 3,則輸出將為17,因為我們可以選擇5、8和15,這需要17塊磚來使高度相同。
為了解決這個問題,我們將遵循以下步驟:
- 對列表heights進行排序
- ans := 無窮大
- s := 0
- 對於每個索引i和heights中的值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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP