Minimum Moves to Equal Array Elements

来源:互联网 发布:华云数据待遇如何知乎 编辑:程序博客网 时间:2024/06/04 01:14

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;    }}
原创粉丝点击