题目:
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]
解题思路:首先对数组进行排序,寻找中位数,每个数与中位数的差之和就是结果。
public class MinimumMovesToEqualArrayElementsII462 {
public int minMoves2(int[] nums) {
if(nums == null || nums.length == 0) return 0;
Arrays.sort(nums);
int len = nums.length;
int target = nums[len >> 1];
int res = 0;
for(int i : nums) res += Math.abs(i - target);
return res;
}
}
本文介绍了一种算法问题,即给定一个非空整数数组,如何找到使所有数组元素相等所需的最小移动次数,每次移动可以增加或减少选定元素的1。通过排序并找到中位数,该问题可以通过计算每个元素与中位数之间的差的绝对值之和来解决。
340

被折叠的 条评论
为什么被折叠?



