LeetCode | 66. 加一

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章