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

来源:互联网 发布:mac如何解压exe文件 编辑:程序博客网 时间:2024/05/17 22:54

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

上代码:

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

0 0
原创粉丝点击