0066. 加一
大约 1 分钟
0066. 加一
- 标签:数组、数学
- 难度:简单
题目链接
题目大意
描述:给定一个非负整数数组,数组每一位对应整数的一位数字。
要求:计算整数加 后的结果。
说明:
- 。
- 。
示例:
- 示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123,加 1 之后为 124。
- 示例 2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
解题思路
思路 1:模拟
这道题把整个数组看成了一个整数,然后个位数加 。问题的实质是利用数组模拟加法运算。
如果个位数不为 的话,直接把个位数加 就好。如果个位数为 的话,还要考虑进位。
具体步骤:
- 数组前补 位。
- 将个位数字进行加 计算。
- 遍历数组
- 如果该位数字大于等于 ,则向下一位进 ,继续下一位判断进位。
- 如果该位数字小于 ,则跳出循环。
思路 1:代码
def plusOne(self, digits: List[int]) -> List[int]:
digits = [0] + digits
digits[len(digits) - 1] += 1
for i in range(len(digits)-1, 0, -1):
if digits[i] != 10:
break
else:
digits[i] = 0
digits[i - 1] += 1
if digits[0] == 0:
return digits[1:]
else:
return digits
思路 1:复杂度分析
- 时间复杂度:。一重循环遍历的时间复杂度为 。
- 空间复杂度:。