解法一
达到最小操作数的方式是按最小和最大两两分组,最终改成平均值。每个分组所需要的操作数是一个等差数列,等差数列的最大值恒为n-1
,但是最小项根据n的奇偶情况变化,然后对等差数列求和即可。
class Solution {
public int minOperations(int n) {
// 平均值
int mid = n;
// 奇数为2, 偶数为1
int begin = n % 2 + 1;
// 项数
int count = (n - 1 - begin) / 2 + 1;
// 总操作数
int ans = (begin + n - 1) * count / 2;
return ans;
}
}