问题描述
LeetCode 66题“加一”要求给定一个由非负整数组成的非空数组,表示一个非负整数,其中每个元素对应整数的一位,最高位位于数组的最左侧。任务是将该整数加一,并返回结果数组。
示例:
- 输入
[1,2,3],输出[1,2,4](表示整数123加一后为124)。 - 输入
[9,9,9],输出[1,0,0,0](表示999加一后为1000,涉及进位问题)。
解决思路
方法一:直接模拟进位
从数组的最后一位开始逐位处理加一操作,并处理进位问题。如果所有位均为9,则需要在数组最前面插入一个1。
步骤:
- 从数组末尾开始遍历。
- 对当前位加一,若结果小于10,直接返回数组。
- 若结果为10,将当前位设为0,并继续处理前一位。
- 若遍历完所有位仍有进位,则在数组开头插入1。
代码示例:
def plusOne(digits):
n = len(digits)
for i in range(n - 1, -1, -1):
if digits[i] < 9:
digits[i] += 1
return digits
digits[i] = 0
return [1] + digits
时间复杂度分析: 最坏情况下需要遍历整个数组(如[9,9,9]),时间复杂度为O(n),空间复杂度为O(1)(原地修改)。
方法二:转换为整数后处理
将数组转换为整数,加一后再转换回数组。此方法简洁但可能受限于语言对大整数的支持(Python无需考虑此问题)。
步骤:
- 将数组转换为整数。
- 整数加一。
- 将结果转换
问题描述
LeetCode 66题“加一”要求给定一个由非负整数组成的非空数组,表示一个非负整数,其中每个元素对应整数的一位,最高位位于数组的最左侧。任务是将该整数加一,并返回结果数组。
示例:
- 输入
[1,2,3],输出[1,2,4](表示整数123加一后为124)。 - 输入
[9,9,9],输出[1,0,0,0](表示999加一后为1000,涉及进位问题)。
解决思路
方法一:直接模拟进位
从数组的最后一位开始逐位处理加一操作,并处理进位问题。如果所有位均为9,则需要在数组最前面插入一个1。
步骤:
- 从数组末尾开始遍历。
- 对当前位加一,若结果小于10,直接返回数组。
- 若结果为10,将当前位设为0,并继续处理前一位。
- 若遍历完所有位仍有进位,则在数组开头插入1。
代码示例:
def plusOne(digits):
n = len(digits)
for i in range(n - 1, -1, -1):
if digits[i] < 9:
digits[i] += 1
return digits
digits[i] = 0
return [1] + digits
时间复杂度分析: 最坏情况下需要遍历整个数组(如[9,9,9]),时间复杂度为O(n),空间复杂度为O(1)(原地修改)。
方法二:转换为整数后处理
将数组转换为整数,加一后再转换回数组。此方法简洁但可能受限于语言对大整数的支持(Python无需考虑此问题)。
步骤:
- 将数组转换为整数。
- 整数加一。
- 将结果转换
260

被折叠的 条评论
为什么被折叠?



