462. Minimum Moves to Equal Array Elements II

原題網址:https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/

Given a non-empty integer array, find the minimum number of moves required to make all array elements equal, where a move is incrementing a selected element by 1 or decrementing a selected element by 1.

You may assume the array's length is at most 10,000.

Example:

Input:
[1,2,3]

Output:
2

Explanation:
Only two moves are needed (remember each move increments or decrements one element):

[1,2,3]  =>  [2,2,3]  =>  [2,2,2]
思路:參考https://discuss.leetcode.com/topic/68736/java-just-like-meeting-point-problem

方法:匯聚點一定在最小與最大之間,最小與最大點之差是一定要的,無論匯聚點在哪裏。

public class Solution {
    public int minMoves2(int[] nums) {
        Arrays.sort(nums);
        int moves = 0;
        for(int i = 0, j = nums.length - 1; i < j; i++, j--) {
            moves += nums[j] - nums[i];
        }
        return moves;
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章