问题概述
给定一个由整数数组表示的大整数 digits,将其加一并返回结果数组。
解法 1:简单方法
工作原理
从右到左处理数字。如果数字小于 9,则加一并返回。否则,将其设为 0 并继续。如果所有数字都是 9,则在前面添加新数字:
python
class Solution:
def plusOne(self, digits):
for i in range(len(digits) - 1, -1, -1):
if digits[i] < 9:
digits[i] += 1
return digits
else:
digits[i] = 0
return [1] + digits
复杂度分析
- 时间复杂度: O(n) - 最坏情况当所有数字都是 9 时需要扫描整个数组
- 空间复杂度: O(1) - 不包括输出数组,只使用常数额外空间
何时使用
- 推荐 - 简单高效
- 处理所有情况,包括进位传播
- 当不需要进位时提前返回
对比
| 方法 | 时间 | 空间 | 最佳适用 |
|---|---|---|---|
| 简单方法 | O(n) | O(1) | 大多数情况,逻辑清晰 |
总结
关键思路是从右到左处理数字。当数字小于 9 时,可以立即加一并返回(无进位)。当数字是 9 时,将其设为 0 并继续(进位传播)。如果所有数字都是 9,需要在前面添加新数字 [1]。这个解法高效地实现了这一逻辑,时间复杂度为 O(n),空间复杂度为 O(1)。