找出中枢整数【LC2485】
给你一个正整数
n,找出满足下述条件的 中枢整数x:
1和x之间的所有元素之和等于x和n之间所有元素之和。返回中枢整数
x。如果不存在中枢整数,则返回-1。题目保证对于给定的输入,至多存在一个中枢整数。
-
思路
枚举xxx,记录
1和x之间的所有元素之和和x和n之间所有元素之和。如果相等,那么返回xxx1和n之间的所有元素之和
-
实现
class Solution { public int pivotInteger(int n) { int right = (n + 1) * n / 2; int left = 0; for (int i = 1; i <= n; i++){ left += i; if (left == right){ return i; } right -= i; } return -1; } }-
复杂度分析
- 时间复杂度:O(n)O(n)O(n)
- 空间复杂度:O(1)O(1)O(1)
-

该问题要求找到一个正整数x,使得1到x的和等于x到给定正整数n的和。通过循环枚举x并计算两侧的和,当两边相等时返回x。代码的时间复杂度为O(n),空间复杂度为O(1)。当找不到符合条件的x时,返回-1。
16万+

被折叠的 条评论
为什么被折叠?



