解法一

达到最小操作数的方式是按最小和最大两两分组,最终改成平均值。每个分组所需要的操作数是一个等差数列,等差数列的最大值恒为n-1,但是最小项根据n的奇偶情况变化,然后对等差数列求和即可。

  1. class Solution {
  2. public int minOperations(int n) {
  3. // 平均值
  4. int mid = n;
  5. // 奇数为2, 偶数为1
  6. int begin = n % 2 + 1;
  7. // 项数
  8. int count = (n - 1 - begin) / 2 + 1;
  9. // 总操作数
  10. int ans = (begin + n - 1) * count / 2;
  11. return ans;
  12. }
  13. }