您的位置:首页 > 其它

[LeetCode]453. Minimum Moves to Equal Array Elements

2017-01-04 23:51 645 查看
Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1.

Example:

Input:

[1,2,3]

Output:

3

Explanation:

Only three moves are needed (remember each move increments two elements):

[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]

题目链接: https://leetcode.com/problems/minimum-moves-to-equal-array-elements/

解题思路:设最小的数为Min,数组的和为Sum,设最小值增加X次为最后相等的值,可得方程

(Min+x)∗n=(n−1)∗x+Sum

可解得 X=Sum−Min∗n

class Solution {
public:
int minMoves(vector<int>& nums) {
int n=nums.size();
int sum=0,minn=INT_MAX ;
for(int i=0;i<n;i++){
sum+=nums[i];
minn=min(minn,nums[i]);
}
return sum-minn*n;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: