class Solution {
public int minMoves(int[] nums) {
//找到规律之后就好做了,先对数升序为[a1,a2,a3...a(n-1).an],
//会发现总次数=(an-a1)+(a(n-1)-a1)+...+(a3-a1)+(a2-a1)
//原因是每轮先把最大的数max不动,其他n-1个数(其中包括一个min)都加上(max-min),下一轮循环,直到min=max;
Arrays.sort(nums);
int sum=0;
for(int i=0;i<nums.length;++i){
sum+=nums[i];
}
return sum-nums.length*nums[0];
}
}
改进版:不采用排序,找到最小值即可,然后依次将数组的值减去最小值,再求和。
转变思路版:不用加法,用减法。评论区:
n-1个少数民族加分相当于1个民族扣分,因此只要将每个数减至和最小值一样即可。计算出总次数(差值)。