列表

详情


2485. 找出中枢整数

给你一个正整数 n ,找出满足下述条件的 中枢整数 x

返回中枢整数 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
解释:可以证明不存在满足题目要求的整数。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int pivotInteger(int n) { } };

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

上一题