原题:
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]
代码如下:
int minMoves(int* nums, int numsSize) {
int min=0;
int cmp(const void* a, const void* b)
{
return *(int*)a-*(int*)b;
}
qsort(nums,numsSize,sizeof(int),cmp);
min=*nums;
int sum=0;
for(int n=0;n<numsSize;n++)
{
sum+=*(nums+n)-min;
}
return sum;
}
感觉被这个英文恶心到了。
遍历一下,算一下所有项与最小项差的和就行了。