目录链接:
力扣编程题-解法汇总_分享+记录-CSDN博客
GitHub同步刷题项目:
https://github.com/September26/java-algorithms
原题链接:力扣
描述:
给你一个正整数 n
,找出满足下述条件的 中枢整数 x
:
1
和x
之间的所有元素之和等于x
和n
之间所有元素之和。
返回中枢整数 x
。如果不存在中枢整数,则返回 -1
。题目保证对于给定的输入,至多存在一个中枢整数。
示例 1:
输入:n = 8 输出:6 解释:6 是中枢整数,因为 1 + 2 + 3 + 4 + 5 + 6 = 6 + 7 + 8 = 21 。
示例 2:
输入:n = 1 输出:1 解释:1 是中枢整数,因为 1 = 1 。
示例 3:
输入:n = 4 输出:-1 解释:可以证明不存在满足题目要求的整数。
提示:
1 <= n <= 1000
解题思路:
先求出和sum,然后从右向左依次减。左边的和等于sun-rightSum,右边的和就是rightSum+i。如果左右相同,则满足要求,返回i。
代码:
class Solution {
public:
int pivotInteger(int n) {
int sum = 0 ;
for(int i=1;i<=n;i++){
sum+=i;
}
int rightSum = 0;
for(int i=n;i>=1;i--){
if((sum-rightSum) == (rightSum+i)){
return i;
}
rightSum+=i;
}
return -1;
}
};