[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
上代码:
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 oj java Minimum Moves to Equal Array Elements
- leetcode 462 Minimum Moves to Equal Array Elements II C++
- 【LeetCode-462】Minimum Moves to Equal Array Elements II
- LeetCode: Minimum Moves to Equal Array Elements II
- [LeetCode]Minimum Moves to Equal Array Elements(Java)
- Leetcode: Minimum Moves to Equal Array Elements II
- Leetcode 462 Minimum Moves to Equal Array Elements II
- [leetcode][462] Minimum Moves to Equal Array Elements II
- Leetcode 之 Minimum Moves to Equal Array Elements II
- (Java) LeetCode 462. Minimum Moves to Equal Array Elements II —— 最少移动次数使数组元素相等 II
- [leetcode462] Minimum Moves to Equal Array Elements II
- Leetcode 462 Minimum Moves to Equal Array Elements II
- [LeetCode] Minimum Moves to Equal Array Elements II 最少移动次数使数组元素相等之二
- LeetCode Minimum Moves to Equal Array Elements II
- LeetCode 462 Minimum Moves to Equal Array Elements II (中位数)
- Leetcode-462 Minimum Moves to Equal Array Elements II
- leetcode Minimum Moves to Equal Array Elements
- LeetCode: Minimum Moves to Equal Array Elements
- [LeetCode] Minimum Moves to Equal Array Elements 最少移动次数使数组元素相等
- LeetCode 462. Minimum Moves to Equal Array Elements II