每日一題 最小操作次數使陣列元素相等

2021-10-25 15:47:11 字數 986 閱讀 8572

給定乙個長度為 n 的 非空 整數陣列,每次操作將會使 n - 1 個元素增加 1。找出讓陣列所有元素相等的最小操作次數。

輸入: [1,2,3]

輸出: 3

解釋: 只需要3次操作(注意每次操作會增加兩個元素的值):

[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]

笨辦法解,對陣列排序,每次對前n-1個元素做+1操作,當每乙個元素都相等的時候,返回+1次數。

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個元素加一,其實最優為留下...