leetcode第66题,数组模拟一个大数,数组高位代表数字的低位,计算这个大数加1。
第一思路,运用python中提供的各种转换函数,先把列表攒成一个数字,然后执行加1操作,最后在拆分成列表。这种方法比较简单,但是不好处理0开头的情况。
第二思路:直接进行大模拟,模拟进位加法,但是不好处理缺位的情况,比如[9]应该返回[1,0]
我采用了第二思路。
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
digits = digits[::-1]
n = len(digits)
if n == 0:
return [1]
add = 0
if digits[0]+1 >= 10:
add = 1
digits[0] = (digits[0]+1)%10
else:
add = 0
digits[0] += 1
for i in range(1,n):
if digits[i]+add >= 10:
digits[i] = (digits[i]+add)%10
add = 1
else:
digits[i] = digits[i]+add
add = 0
if add != 0:
digits.append(add)
return digits[::-1]