儿童节快乐
解题思路1
python3
一次for循环解决问题
从数组尾部遍历
如果遇到数字不是9就+1,并返回
如果是9,则将当前数字置0,并进入下一轮循环
考虑特殊情况:9999
此时需要检查最后一次for循环的数字是不是0
即digits[0]是否为0,如果是0,则遇到了特殊情况
此时需要在数组最前面加一个数字1,然后返回即可
代码1
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
for i in range(len(digits)-1, -1, -1):
if digits[i] is not 9:
digits[i] += 1
return digits
else:
digits[i] = 0
if digits[0] is 0:
digits.insert(0, 1)
return digits
解题思路2
python3
赖皮解法
先将数字列表数组转化为数字
然后+1
最后将数字转化为数组,并返回
代码2
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
a = [i *10**index for index,i in enumerate(digits[::-1])]
num = sum(a) + 1
return [int(x) for x in str(num)]