0%

453. 最小操作次数使数组元素相等

453.最小操作次数使数组元素相等

题目描述:

给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。

数据范围:

$1\le nums.len \le 10^5$

题解:

考虑反面,对 $n - 1$ 个数加 $1$ ,从大小关系上来说,相当于对一个数减 $1$ 。因此可以考虑该操作为对一个数减 $1$ 。这样的话就很简单了,只需要累加一下每个数与最小值的差值即可。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
auto optimize_cpp_stdio = []()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
return 0;
}();
class Solution
{
public:
const static int maxn = 1e5 + 10;
const static int maxm = 1e5 + 10;
const int INF = 0x3f3f3f3f;
int minMoves(vector<int> &nums)
{
sort(nums.begin(), nums.end());
int ans = 0;
for (auto &x : nums)
{
ans += x - nums[0];
}
return ans;
}
};