做一个棋牌网站要多少钱网络广告策划与制作
题目描述:
给你一个正整数 n ,找出满足下述条件的 中枢整数 x :
1 和 x 之间的所有元素之和等于 x 和 n 之间所有元素之和。
返回中枢整数 x 。如果不存在中枢整数,则返回 -1 。题目保证对于给定的输入,至多存在一个中枢整数。
题目链接:LeetCode-2485-找出中枢整数
解题思路:
方法一:双指针:一前一后走,当sumLeft == sumRight并且i==j时退出while循环
方法二:根据数学公式推导
方法一代码实现:
class Solution {public int pivotInteger(int n) {// 双指针:一前一后走,当sumLeft == sumRight并且i==j时退出while循环int i = 1, j = n;int sumLeft = 1, sumRight = n;int sum=n*(n+1)/2;while (i <= j) {if (sumLeft == sumRight) {if (i == j) break;i++;sumLeft += i;} else if (sumLeft < sumRight){i++;sumLeft += i;}else {j--;sumRight += j;}}return i == j ? i : -1;}
}
题解可以看官方给的解题思路:传送门
方法二代码实现:
class Solution {public int pivotInteger(int n) {int sum=n*(n+1)/2;int tmp=(int) Math.sqrt(sum);return tmp*tmp==sum ? tmp:-1;}
}