您的位置:首页 > 编程语言 > C语言/C++

【C语言】 leetcode 453. Minimum Moves to Equal Array Elements

2017-01-05 18:52 429 查看

题目

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]

思路

题目希望用最少的步骤是的所有的数字相同,每次n-1个元素加1,观察例子可以看出每次是的不是最大的n-1个数字加1,那么转换过来就是每次使最大的那个数字减1,所以为了是的数组一致,所有的数字都必然会减到最小的那个数字。

解答

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