LeetCode 2485. 找出中枢整数

LeetCode 2485. 找出中枢整数

  • 原题
  • 题目大意及思路
  • 代码
  • 运行截图
  • 收获

原题

LeetCode 2485. 找出中枢整数

题目大意及思路

  • 题目大意: 给出 n ,找到[1, n]中的一个数 x 能够使得 1+2+…+ x = x + x+1 + … + n
  • 思路: 1 + 2 + … + n 可用求和公式算出结果,那么只要从 1 开始遍历并进行判断就可以。cnt 为左边之和, recnt 为右边之和, 这里的一个小 trick 是:我们在每一个循环里先让 cnt += i,此时 cnt 刚好为 1 + 2 + … + i,recnt 为 i + i+1 + … + n,直接判断俩者是否相等, 判断后 recnt -= i 留给后一轮判断。

代码

class Solution {
public:
    int pivotInteger(int n) {
        int sum = (n * n + n)/ 2;
        int cnt = 0, recnt = sum;
        for (int i = 1; i <= n; i++) {
            cnt += i;
            if (recnt == cnt) return i;
            recnt -= i;
        }
        return -1;
    }
};

运行截图

LeetCode 2485. 找出中枢整数_第1张图片

收获

你可能感兴趣的:(leetcode,算法,职场和发展)