class Solution {
public:
int pivotInteger(int n) {
}
};
2485. 找出中枢整数
给你一个正整数 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
原站题解
rust 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2023-09-13 11:41:52
impl Solution { pub fn pivot_integer(n: i32) -> i32 { let mut i: i32 = 1; let mut j: i32 = n; let mut sum = 0; while i < j { if sum < 0 { sum += i; i += 1; } else { sum -= j; j -= 1; } } if sum == 0 { return i; } -1 } }
rust 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2023-09-13 11:40:31
impl Solution { pub fn pivot_integer(n: i32) -> i32 { let m = n * (n + 1) / 2; let x = (m as f64).sqrt() as i32; if x.pow(2) == m { x } else { -1 } } }
php 解法, 执行用时: 8 ms, 内存消耗: 19 MB, 提交时间: 2023-09-13 11:38:36
class Solution { /** * @param Integer $n * @return Integer */ function pivotInteger($n) { $m = $n * ($n + 1) / 2; $x = intval(sqrt($m)); return $x * $x == $m ? $x : -1; } }
cpp 解法, 执行用时: 4 ms, 内存消耗: 5.8 MB, 提交时间: 2023-09-13 11:37:34
class Solution { public: int pivotInteger(int n) { int m = n * (n + 1) / 2; int x = (int) sqrt(m); return x * x == m ? x : -1; } };
java 解法, 执行用时: 0 ms, 内存消耗: 38.5 MB, 提交时间: 2023-09-13 11:36:04
class Solution { public int pivotInteger(int n) { int m = n * (n + 1) / 2; int x = (int) Math.sqrt(m); return x * x == m ? x : -1; } }
golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2022-12-01 00:00:11
func pivotInteger(n int) int { m := n * (n + 1) / 2 x := int(math.Sqrt(float64(m))) if x*x == m { return x } return -1 }
python3 解法, 执行用时: 40 ms, 内存消耗: 15 MB, 提交时间: 2022-11-30 23:59:54
class Solution: def pivotInteger(self, n: int) -> int: m = n * (n + 1) // 2 x = int(m ** 0.5) return x if x * x == m else -1
python3 解法, 执行用时: 36 ms, 内存消耗: 14.9 MB, 提交时间: 2022-11-30 23:57:42
class Solution: def pivotInteger(self, n: int) -> int: ''' 1 + ... + x = x + .. + n x(x+1)/2 = (n+x)(n-x+1)/2 x = sqrt((n^2+n)/2) ''' k = math.sqrt((n*n+n)/2) if int(k) == k: return int(k) return -1