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)

 

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