1. 程式人生 > >453. 最小移動次數使數組元素相等

453. 最小移動次數使數組元素相等

給定 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. 最小移動次數使數組元素相等