給定乙個長度為 n 的 非空 整數陣列,每次操作將會使 n - 1 個元素增加 1。找出讓陣列所有元素相等的最小操作次數。
輸入: [1,2,3]笨辦法解,對陣列排序,每次對前n-1個元素做+1操作,當每乙個元素都相等的時候,返回+1次數。輸出: 3
解釋: 只需要3次操作(注意每次操作會增加兩個元素的值):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
class
solution
:def
minmoves
(self, nums)
: count =
0 len_nums =
len(nums)
while
true
: nums.sort(
)if nums[0]
== nums[len_nums -1]
:return count
else
:for i in
range
(len_nums-1)
: nums[i]+=1
count +=
1
但是這樣做會超出時間限制。
我們反向思維一下,每次對n-1個元素+1,就相當於對1個元素-1。
class
solution
:def
minmoves
(self, nums)
: nums.sort(
) min_num = nums[0]
count =
0for i in nums:
count += i - min_num
return count
LeetCode每日一題 使陣列唯一的最小增量
給定整數陣列 a,每次 move 操作將會選擇任意 a i 並將其遞增 1。返回使 a 中的每個值都是唯一的最少操作次數。示例 1 輸入 1,2,2 輸出 1 解釋 經過一次 move 操作,陣列將變為 1,2,3 示例 2 0 a.length 40000 0 a i 40000 先對陣列進行從小...
每日一題 移除元素
給你乙個陣列 nums 和乙個值 val,你需要 原地 移除所有數值等於 val 的元素,並返回移除後陣列的新長度。不要使用額外的陣列空間,你必須僅使用 o 1 額外空間並 原地 修改輸入陣列。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。示例 1 給定 nums 3,2,2,3 va...
453 最小移動次數使陣列元素相等
給定乙個長度為 n 的非空整數陣列,找到讓陣列所有元素相等的最小移動次數。每次移動可以使 n 1 個元素增加 1。示例 輸入 1,2,3 輸出 3 解釋 只需要3次移動 注意每次移動會增加兩個元素的值 1,2,3 2,3,3 3,4,3 4,4,4 題目說每次都將餘下n 1個元素加一,其實最優為留下...