力扣刷题:找出中枢整数

198 阅读2分钟

前言:锻炼自己的思想,规范自己的编程思路。

问题:

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

1 和 x 之间的所有元素之和等于 x 和 n 之间所有元素之和。 返回中枢整数 x 。如果不存在中枢整数,则返回 -1 。题目保证对于给定的输入,至多存在一个中枢整数。

示例:(放代码里面)

输入:n = 8
输出:6
解释:6 是中枢整数,因为 1 + 2 + 3 + 4 + 5 + 6 = 6 + 7 + 8 = 21 。

思路:

函数名为 pivotInteger ,它接受一个参数 n,并返回一个数字。

该函数使用两个嵌套循环来计算两个结果:resultA 和 resultB。

外层循环从 1 到 n 遍历变量 X。对于每个 X 值,内层循环分别计算两个结果。

第一个内层循环从 1 到 X 遍历变量 i,并将每个 i 值累加到 resultA 中。

第二个内层循环从 n 到 X 遍历变量 j,并将每个 j 值累加到 resultB 中。

如果在某次迭代中,resultA 等于 resultB,则函数返回当前的 X 值。如果在整个外层循环结束后都没有找到这样的 X 值,则函数返回 -1。

总之,这个函数试图找到一个数字 X,使得 1 到X 的和等于 X 到 n 的和。如果找到了这样的数字,则返回它;否则返回 -1。

基于上述思考,代码如下:

/**
 * @param {number} n
 * @return {number}
 */
var pivotInteger = function(n) {
    for(let X = 1;X<=n;X++){
        resultA = 0;
        resultB = 0;
        for(let i = 1;i <= X;i++){
            resultA += i
        }
        for(let j = n;j >= X;j--){
            resultB += j
        }
        if(resultA === resultB) return X
    }
    return -1
};

执行结果如下图:

image-20230626122019079.png

巩固知识点:

在循环中使用 return 语句可以提前结束函数。当程序执行到 return 语句时,它会立即退出当前函数,并返回指定的值(如果有的话)。

这种技术通常用于在循环中检查某个条件是否满足,如果满足则立即结束函数并返回结果。例如,在搜索算法中,当找到目标元素时,可以使用return 语句来立即结束搜索并返回结果。