"""
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)