給定乙個長度為 n 的非空整數陣列,找到讓陣列所有元素相等的最小移動次數。每次移動可以使 n - 1 個元素增加 1。解法1:示例:輸入: [1,2,3]
輸出: 3
解釋: 只需要3次移動(注意每次移動會增加兩個元素的值):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
int
minmoves
(vector<
int>
& nums)
思路:n - 1個元素均增加1,相當於另外乙個元素降低1. 因此直接計算所有元素與最小值的差即可。、
解法2:
int
minmoves
(vector<
int>
& nums)
return sum - min * nums.
size()
;}
思路:根據解法1提煉出的公式:陣列求和-最小值*陣列長。 453 最小移動次數使陣列元素相等
給定乙個長度為 n 的非空整數陣列,找到讓陣列所有元素相等的最小移動次數。每次移動可以使 n 1 個元素增加 1。示例 輸入 1,2,3 輸出 3 解釋 只需要3次移動 注意每次移動會增加兩個元素的值 1,2,3 2,3,3 3,4,3 4,4,4 題目說每次都將餘下n 1個元素加一,其實最優為留下...
453 最小移動次數使陣列元素相等
給定乙個長度為 n 的非空整數陣列,找到讓陣列所有元素相等的最小移動次數。每次移動可以使 n 1 個元素增加 1 示例 輸入 1,2,3 輸出 3 解釋 只需要3次移動 注意每次移動會增加兩個元素的值 1,2,3 2,3,3 3,4,3 4,4,4 題目解釋 假設陣列的長度為n,每次移動都會是其中n...
351,最少移動次數使陣列元素相等 II
給定乙個非空整數陣列,找到使所有陣列元素相等所需的最小移動數,其中每次移動可將選定的乙個元素加1或減1。您可以假設陣列的長度最多為10000。例如 輸入 1,2,3 輸出 2 說明 只有兩個動作是必要的 記得每一步僅可使其中乙個元素加1或減1 1,2,3 2,2,3 2,2,2 答案 public ...