原题链接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]
思路分析
给定非空整数数组,每次可把数字加一或减一,返回把数组元素变为相等的做少操作数
- 直接法:
找到数组中位数,其余元素向其靠近,累加操作次数 bingo - ……//懒惰如我
源码附录
class Solution {
public int minMoves2(int[] nums) {
if(nums.length<2)
{
return 0;
}
Arrays.sort(nums);
int result = 0;
for(int i=0;i<nums.length;i++)
{
result = result + Math.abs(nums[i]-nums[nums.length/2]);
}
return result;
}
}