• 453. 最小移动次数使数组元素相等


    给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。

    示例:

    输入:
    [1,2,3]
    
    输出:
    3
    
    解释:
    只需要3次移动(注意每次移动会增加两个元素的值):
    
    [1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

    思路:

    设加x次,加到最后,每个数都为y

    sum:数组元素的和

    min:数组中最小的元素

    n:数组中元素的个数

    则有: 

    sum+(n-1)*x = n*y(式1)

    y = min+x(式2)

    得:x = sum-n*min

    class Solution {
        public int minMoves(int[] nums) {
            int sum = 0;
            int min =nums[0];
            for (int i=0;i<nums.length;i++) {
                sum+=nums[i];
            }
            for (int i=1;i<nums.length;i++) {
                min = Math.min(min,nums[i]);
            }
            
            return sum-nums.length*min;
             
        }
    }
    

      

    class Solution {
        public int minMoves(int[] nums) {
            if (nums.length == 0)return 0;
            int min = nums[0];
            for (int n:nums) {
                min = Math.min(min,n);
            }
            int res = 0;
            for (int n:nums) {
                res+=n-min;
            }
            return res;
        }
    }
    

      

  • 相关阅读:
    Linux 文件、目录与磁盘格式
    前端初始-HTML
    图片验证码
    note_Set
    MVC登出友情提示
    c#后台调用API
    服务器上调用 批处理、程序集的那些事
    客户懂点代码是最致命的毒药
    Json基础
    多条目日志记录小结
  • 原文地址:https://www.cnblogs.com/airycode/p/10254385.html
Copyright © 2020-2023  润新知