LeetCode 筆記 - 453. Minimum Moves to Equal Array Elements

針對讓數列元素相等的最小移動次數,本文分享一個巧妙的邏輯轉化:將「n-1 個數字加一」視為「選定一個數字減一」。透過此轉變,問題變成了將所有數字降至最小值的累計次數,極大地簡化了計算難度與程式複雜度。

發佈
閱讀
約 1 分鐘
字數
220
⚠️ 舊文提醒:本文發佈於約 4 年前,部分內容或指令可能已過時,請斟酌參考。

題目在此 453. Minimum Moves to Equal Array Elements

給定一個數列,每一步可以選定一格,其他 n - 1 格都會加 1
請給出讓每個數字都相等的最小步驟

解題思維

首先我們可以轉換一下問題
把 n - 1 個數字加 1 轉變成 選定一個數字減 1

所以這個問題就會變成 把每個數字變成數列最小數字的次數
這樣思考就簡單多了

程式碼

1
2
3
4
5
6
7
8
class Solution:
def minMoves(self, nums: List[int]) -> int:

min_value = min(nums)
result = 0
for n in nums:
result += n - min_value
return result

也許你也會想看看

輸入關鍵字開始搜尋 · ↑↓ 選擇 · Enter 開啟