453. 最小移動次數使數組元素相等
阿新 • • 發佈:2019-01-11
給定 ret length 數組 move 輸入 true java n)
給定一個長度為 n 的非空整數數組,找到讓數組所有元素相等的最小移動次數。每次移動可以使 n - 1 個元素增加 1。
示例:
輸入: [1,2,3] 輸出: 3 解釋: 只需要3次移動(註意每次移動會增加兩個元素的值): [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
思路:
設加x次,加到最後,每個數都為y
sum:數組元素的和
min:數組中最小的元素
n:數組中元素的個數
則有:
sum+(n-1)*x = n*y(式1)
y = min+x(式2)
得:x = sum-n*min
class Solution { public int minMoves(int[] nums) { int sum = 0; int min =nums[0]; for (int i=0;i<nums.length;i++) { sum+=nums[i]; } for (int i=1;i<nums.length;i++) { min = Math.min(min,nums[i]); } return sum-nums.length*min; } }
class Solution { public int minMoves(int[] nums) { if (nums.length == 0)return 0; int min = nums[0]; for (int n:nums) { min = Math.min(min,n); } int res = 0; for (int n:nums) { res+=n-min; } return res; } }
453. 最小移動次數使數組元素相等