2023-06-26 2485. 找出中枢整数

135 阅读1分钟

leetcode.cn/problems/fi…

基于等差数列求和公式,依次使用 1 到 n 中的每个数字,把它当作中枢数去计算两边的数列的和。如果两边数列和相等,那么当前这个数字就是中枢数。如果直到循环结束,都没有发现一个正确的中枢数,那么返回 -1

等差数列求和公式

  • Sn:数列的和
  • n:数列的项数
  • a:数列的第一项
  • an:数列的最后一项

image.png

class Solution {
    public int pivotInteger(int n) {
        // 从 n 开始倒序循环,应该可以更早结束循环
        for (int i = 1; i <= n; ++i) {
            if (sum(1, i) == sum(i, n)) {
                return i;
            }
        }
        return -1;
    }

    private int sum(int start, int end) {
        return (start + end) * (end - start + 1) / 2;
    }
}