純數(shù)學(xué)問(wèn)題,沒(méi)想出來(lái)
由題目可以得到兩個(gè)等式
n為nums的數(shù)組長(zhǎng)度,m為答案,x為最后全相等時(shí)的值
sum(nums)+m(n-1)=xn
min(nums)+m=x
第一個(gè)等式很顯然,第二個(gè)等式?jīng)]有那么明了
可以這么理解,如果每次都加n-1,那么除了最大的那個(gè)數(shù),其他數(shù)都需要加,對(duì)于最小的數(shù),每次增加都有它的份,所以可得。
推倒可得
m=sum-min*n
C++
class Solution {
public:
int minMoves(vector<int>& nums) {
int total=0;
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size();i++)
{
total+=nums[i];
}
int result=total-nums[0]*nums.size();
return result;
}
};
Java
public class Solution {
public int minMoves(int[] nums) {
int total=0;
Arrays.sort(nums);
for(int i=0;i<nums.length;i++)
{
total+=nums[i];
}
int result=total-nums[0]*nums.length;
return result;
}
}
Javascript
/**
* @param {number[]} nums
* @return {number}
*/
var minMoves = function(nums) {
var total=0;
nums.sort(function(a,b){return a-b;});
for(var i=0;i<nums.length;i++)
{
total+=nums[i];
}
var result=total-nums[0]*nums.length;
return result;
};
總結(jié)一下
C++ vector sort
sort(nums.begin(),nums.end());
Java sort
Arrays.sort(nums);
Javascript sort
nums.sort(function(a,b){return a-b;});