Minimum Moves to Equal Array Elements

https://leetcode.com/problems/minimum-moves-to-equal-array-elements/#/description

题目思路:
/*
* 一开始的目地是要想让他们全部相等,可以等同于如何让最小的数和全部比它大的数变得相等。
* 每次都是全部数加1,一个数停止增大。
* 假设这组数为1,2,3,4,5。
* 最小的数为1,想要让1和5相等。则5必须停止增长(5-1)次
* 最小的数为1,想要让1和4相等,则4必须停止增长(4-1)次
* 。。。。。。。
* 以此类推。
* 最小的数要和其它每个数相等要这种自加的操作(5-1)+(4-1)+(3-1)+(2-1)=10次。
* 由于每次执行自加的操作只能有一个数保持不增加
* 所以最小的数只能和某个数差距-1
* 所以最小的操作数不能少于10次。
* 只要经过10次加-操作之后,所有数都相等,则最小操作数就等于10。
* 由于每次让都是让最大的数保持不加,直到和最小的数相等为止
* 经过10次这样的加一操作之后,所有的数都会和最小的数相等
* 因此最小的操作数是10。
*/

public class Solution {
    public int minMoves(int[] nums) {
        int min = nums[0];
        for(int i : nums)
            min = i < min ? i : min;
        int res = 0;
        for(int i : nums)
            res += i - min;
        return res;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值