Leetcode-66.加一

儿童节快乐


解题思路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)]