给定一个大小为n的非空整数数组,找出使得数组中所有元素相同的最少步数,其中一步被定义为将数组中n - 1个元素加一。
样例
输入:
[1,2,3]
输出:
3
说明:
只需要三步即可(每一步将其中两个元素加一):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
思路:一共n个数,n-1个数加一,相当于被余下数减一,所以找到数组中的最小值,每个数减去最小值即为它该被余下的次数,余下一次则走一步,从而得到答案。
class Solution {
public:
/**
* @param nums: an array
* @return: the minimum number of moves required to make all array elements equal
*/
int minMoves(vector<int> &nums) {
// Write your code here
int len=nums.size();
if(len<2) return 0;
int step=0;
sort(nums.begin(),nums.end());
for (auto temp : nums) {
/* code */
step+=temp-nums[0];
}
return step;
}
};