给你一个整数数组 nums。
在一步操作中,你可以将任意单个元素 nums[i] 的值 增加 1。
返回使数组中的所有元素都 相等 所需的 最小总操作次数。
示例 1:
输入: nums = 2,1,3
输出: 3
解释:
使所有元素相等的操作如下:
- 将
nums[0] = 2增加 1, 变为 3。 - 将
nums[1] = 1增加 1, 变为 2。 - 将
nums[1] = 2增加 1, 变为 3。
现在,nums 中的所有元素都等于 3。最小总操作次数为 3。
示例 2:
输入: nums = 4,4,5
输出: 2
解释:
使所有元素相等的操作如下:
- 将
nums[0] = 4增加 1, 变为 5。 - 将
nums[1] = 4增加 1, 变为 5。
现在,nums 中的所有元素都等于 5。最小总操作次数为 2。
提示:
1 <= nums.length <= 1001 <= nums[i] <= 100
分析:找到数组中最大元素,求出其它元素与最大元素的差值之和即为总操作数。
cpp
class Solution {
public:
int minMoves(vector<int>& nums) {
int n=nums.size(),maxn=-1,ans=0;
for(int i=0;i<n;++i)
maxn=max(maxn,nums[i]);
for(int i=0;i<n;++i)
ans+=maxn-nums[i];
return ans;
}
};