0
点赞
收藏
分享

微信扫一扫

Minimum Moves to Equal Array Elements

今天你读书了吗 2022-03-12 阅读 57
leetcode

Given an integer array nums of size n, return the minimum number of moves required to make all array elements equal.

In one move, you can increment n - 1 elements of the array by 1.

Example 1:

Input: nums = [1,2,3]
Output: 3
Explanation: Only three moves are needed (remember each move increments two elements):
[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

Example 2:

Input: nums = [1,1,1]
Output: 0

Constraints:

  • n == nums.length
  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • The answer is guaranteed to fit in a 32-bit integer.

思路:

/**
 * Each move increments n-1 elements by 1.
 * This means every element except for one (ideally the biggest element) increases.
 * This can also be translated into only the biggest element gets decremented by 1.
 * Hence the question boils down to finding the minimum element, and how many 1 decrements all other elements need to reach that minimum.
 */

 

class Solution {
    public int minMoves(int[] nums) {
        int min = nums[0];
        for(int i = 1; i < nums.length; i++) {
            min = Math.min(min, nums[i]);
        }
        
        int res = 0;
        for(int num: nums) {
            res += num - min;
        }
        return res;
    }
}
举报

相关推荐

0 条评论