您的位置:首页 > 编程语言 > Java开发

[LeetCode]Minimum Moves to Equal Array Elements II(Java)

2016-12-15 15:56 465 查看
这道题暴力解,二分查找都不对,只能采取先排序,按排序得到结果从小到大依次按当前尝试值和之前尝试值得之差分别计算比当前值小和比当前值大的数的个数计算。

上代码:

public class Solution {
public int minMoves2(int[] nums) {
int length = nums.length;
Arrays.sort(nums);
int key = nums[0];
int result = getResult(nums,key),pre = result;
int i = 1;
System.out.println(result);
key++;
while(key <= nums[length - 1]&& i < length){
//key++;
if(key > nums[i]){
i++;
continue;
}else{
key++;
//System.out.println(result);

}
pre = result;
result = result - length + 2 * i;
System.out.printf("key : %d\n" ,key);
System.out.printf("i : %d\n" , i);
System.out.println(nums[i]);
System.out.printf("Result : %d\n" ,result);
if(result > pre)
break;
}

return pre;
}
private int getResult(int[] nums,int key){
int result = 0;
for(int i = 0;i < nums.length;i++){
result += Math.abs(key - nums[i]);
}
return result;
}
}

2016/12/15
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode java