LeetCode 754. 到达终点数字
题目描述
思路分析
解法一:等差和 + 奇偶性(推荐)
核心思路:
- 设累计步数和为
sum = 1 + 2 + ... + k。- 当
sum >= target且sum - target为偶数时即可通过反向某些步数抵消。- 逐步增加 k,直到满足条件。
复杂度分析:
- 时间复杂度:O(√target),其中 target 表示目标值。
- 空间复杂度:O(1)。
class Solution {
public int reachNumber(int target) {
target = Math.abs(target);
int sum = 0;
int k = 0;
while (sum < target || (sum - target) % 2 != 0) {
k++;
sum += k;
}
return k;
}
}
func reachNumber(target int) int {
if target < 0 {
target = -target
}
sum := 0
k := 0
for sum < target || (sum-target)%2 != 0 {
k++
sum += k
}
return k
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 628. 三个数的最大乘积 | 简单 | 数学 |
| 171. Excel 表列序号 | 简单 | 数学 |
| 9. 回文数 | 简单 | 数学 |
| 67. 二进制求和 | 简单 | 数学 |
| 258. 各位相加 | 简单 | 数学 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!