zoukankan      html  css  js  c++  java
  • 462. 最少移动次数使数组元素相等 II_数组_中等

     思路是对于数组个数为奇数的,选择中间那个元素的数作为要移动的目标值,原因是中间的数到两边的数距离之和最短,因为从中间向两边任意一边移动都会导致其他元素到该数组距离改变,但是中间元素距离从0变为大于0,所以选择中间的元素数就可以,偶数则选择中间两个数的区间作为目标取最短距离即可。

    class Solution {
        public int minMoves2(int[] nums) {
        int length = nums.length;
         int minDis = Integer.MAX_VALUE;
         Arrays.sort(nums);
        if(length % 2==1){
            int num = nums[nums.length/2];
            int dis =  0;
            for(int j=0;j<nums.length;j++){
                    dis += Math.abs(nums[j]-num);
                }
            minDis = dis;
        }else{
            int begin = nums[nums.length/2-1];
            int end  = nums[nums.length/2];
           
            for(int i=begin;i<=end;i++){
                int dis = 0;
                for(int j=0;j<nums.length;j++){
                    dis += Math.abs(nums[j]-i);
                }
                if(dis < minDis){
                    minDis = dis;
                }
            }
        }
         return minDis;
        }
    }
    作者:你的雷哥
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    git 命令
    Spring Boot Web应用开发 CORS 跨域请求支持
    layui demo
    jQuery jqGrid 4.7
    jQurey zTree Demo 3.5
    jQurey zTree API 3.5
    jQurey Select2 4.0
    jQurey Validation 1.16
    Laytpl 1.2
    My97DatePicker 4.8
  • 原文地址:https://www.cnblogs.com/henuliulei/p/15349187.html
Copyright © 2011-2022 走看看