「每日LeetCode」2022年12月22日
本文最后更新于:2023年3月19日 晚上
2485.找出中枢整数
2485.找出中枢整数
Category | Difficulty | Likes | Dislikes |
---|---|---|---|
algorithms | Easy (82.13%) | 6 | - |
Tags
Companies
给你一个正整数 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
思路
在代码中,定义了一个函数 pivotInteger,接收一个参数 n。函数内部初始化了两个变量 sum1 和 sum2,和两个数组 arr1 和 arr2。
接下来在一个循环中,用 i 从 1 遍历到 n。每次循环,向 sum1 中加上 i,向 sum2 中加上 n-i+1。将 sum1 的值赋值给 arr1 的第 i-1 个元素,将 sum2 的值赋值给 arr2 的第 n-i 个元素。
接下来,再进行一次循环,遍历 arr1 数组的所有元素。每次循环,将 arr1 的第 i 个元素赋值给 num1,将 arr2 的第 i 个元素赋值给 num2。如果 num1 等于 num2,就返回 i+1。
如果在循环结束后,没有返回值,则返回 -1。
综上所述,这段代码的作用是:从 1 遍历到 n,找出第一个使得前缀和等于后缀和的数的位置,并返回这个位置。如果找不到,则返回 -1。前缀和指的是 1 到当前数的和,后缀和指的是当前数到 n 的和。
解答
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!