LeetCode 66. 加一
题目描述
✅ 66. 加一
思路分析
解法一:模拟进位(推荐)
核心思路:
- 从末尾开始加一,处理进位。
- 若某位小于 9,则加一后直接返回。
- 若全部为 9,则返回长度加一的新数组,首位为 1。
复杂度分析:
- 时间复杂度:O(n),其中 n 表示数组长度。
- 空间复杂度:O(1),若需要新数组则为 O(n)。
class Solution {
public int[] plusOne(int[] digits) {
for (int i = digits.length - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
int[] res = new int[digits.length + 1];
res[0] = 1;
return res;
}
}
func plusOne(digits []int) []int {
for i := len(digits) - 1; i >= 0; i-- {
if digits[i] < 9 {
digits[i]++
return digits
}
digits[i] = 0
}
res := make([]int, len(digits)+1)
res[0] = 1
return res
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 67. 二进制求和 | 简单 | 模拟进位 |
| 989. 数组形式的整数加法 | 简单 | 模拟进位 |
| 415. 字符串相加 | 简单 | 模拟进位 |
| 43. 字符串相乘 | 中等 | 高精度模拟 |
| 258. 各位相加 | 简单 | 数学/模拟 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
