题目来源:https://leetcode.cn/problems/find-the-pivot-integer/description/
![](https://img-blog.csdnimg.cn/img_convert/3a3af14e2cf48fdb4caa16df9191c0a9.png)
C++题解:先用sum=(n+1)n/2计算出1到n的总和,再用一个循环,从大到小,逐一减去,计算左边值总和;同时右边的值逐一相加,为右边值的总和。当左边的总和小于右边的总和,则跳出循环。
class Solution {
public:
int pivotInteger(int n) {
int x = -1;
int sum = (n+1)*n/2; // 计算总和
int right = n; // 右边总和的初始化
if(n == 1) return 1; // 特殊情况
for(int ii = n; ii > 0; ii--){
sum = sum - ii; //左边和更新
right = right + ii - 1; //右边和更新
if(sum == right){ //判断是否找到x值
x = ii-1;
break;
}
if(sum < right) break; //判断不存在x值
}
return x;
}
};