"""
66. 加一
https://leetcode.cn/problems/plus-one/
题目分析:
这题难度是简单,基本上思路就是大整数的进位
因为用了两个数组,内存消耗有些大
理论:模拟
定义一个carry=0,用以记录是否需要进位
1.将最后一位+1
2.倒序循环digits,可以用popup
3.计算carry和新的digit
4.将新digit加入新list->stack
5.返回stack
注意/难点:
最后需要判断carrry是否有值
"""
class Solution:
def plusOne(self, digits:list) ->list:
carry=0
stack=[] #初始化值
digits[-1]+=1 #最后一位+1
while digits:
digit=digits.pop() #弹出末位值
num=(digit+carry)%10 #计算余数
carry=(digit+carry)//10 #计算进位
stack.insert(0,num) #插入值
if carry>0: #最后需要进位
stack.insert(0,carry)
return stack #返回值
# digits = [1,2,3]
# digits = [9]
digits = [9,9]
ans=Solution().plusOne(digits)
print(ans)