原题
给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动将会使 n - 1 个元素增加 1。
示例:
输入: [1,2,3] 输出: 3 解释: 只需要3次移动(注意每次移动会增加两个元素的值): [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
解法
思想
根据峡谷相对论,给n-1个数加一,相当于给剩下的那个数减一
代码
class Solution {
public int minMoves(int[] nums) {
Integer min = null;
int sum = 0;
for(int i=0;i<nums.length;i++) {
if(min == null || nums[i] < min) {
min = nums[i];
}
sum += nums[i];
}
return sum - min*nums.length;
}
}
原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/leetcode453-%e6%9c%80%e5%b0%8f%e7%a7%bb%e5%8a%a8%e6%ac%a1%e6%95%b0%e4%bd%bf%e6%95%b0%e7%bb%84%e5%85%83%e7%b4%a0%e7%9b%b8%e7%ad%89/