您的位置:首页 > 其它

453. Minimum Moves to Equal Array Elements 难度:easy

2016-12-29 15:00 344 查看
题目:

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]


思路:

若使数组尽快满足题目要求,则需要每次给除去最大值的其余数字加1,可转换为每次将数组中的n-1个数字加1,相当于将剩余的一个数字减1。所以只需找到数组中的最小值m,计算m与数组中其他数字差的累计和即可。

程序:

class Solution {
public:
int minMoves(vector<int>& nums) {

sort(nums.begin(), nums.end());
int len = nums.size(), res = 0;

for (int i = 1; i < len; i++) {
res += nums[i] - nums[0];
}

return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: