题目:
思路:
这个题一开始看起来很绕,实际上可以看成,把数组中的各个数组合起来变成一个整数,然后加一,返回的结果是每一位数。因此很简单,加法运算无非考虑的只有进位的问题,也就是说末位是9的时候,+1之后的进位问题。
因此可以写个循环,判断当前位是否需要进位,需要则将此位变成0,前一位+1,以此类推。
还有一个注意的点:首位进位变成10之后也需要进行处理,因为会多一位数字。
代码如下:
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
if digits[0] == 0:
return [1]
# 先把最后一位+1
digits[-1] += 1
for i in range(len(digits) - 1, 0, -1):
# 判断是否有进位,有的话此位置0,前一位+1
if digits[i] == 10:
digits[i] = 0
digits[i - 1] += 1
# 如果首位在上面计算之后变成10,则置1,数组加个0进来
if digits[0] == 10:
digits[0] = 1
digits.append(0)
return digits