453. Minimum Moves to Equal Array Elements

453. Minimum Moves to Equal Array Elements_第1张图片

纯数学问题,没想出来

由题目可以得到两个等式
n为nums的数组长度,m为答案,x为最后全相等时的值

sum(nums)+m(n-1)=xn
min(nums)+m=x

第一个等式很显然,第二个等式没有那么明了
可以这么理解,如果每次都加n-1,那么除了最大的那个数,其他数都需要加,对于最小的数,每次增加都有它的份,所以可得。

推倒可得

m=sum-min*n

C++

class Solution {
public:
    int minMoves(vector& nums) {
        int total=0;
        sort(nums.begin(),nums.end());
        for(int i=0;i

Java

public class Solution {
    public int minMoves(int[] nums) {
        int total=0;
        Arrays.sort(nums);
        for(int i=0;i

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

总结一下

C++ vector sort

sort(nums.begin(),nums.end());

Java sort

Arrays.sort(nums);

Javascript sort

nums.sort(function(a,b){return a-b;});

你可能感兴趣的:(453. Minimum Moves to Equal Array Elements)