66. Plus One

1. 我的AC

方法一

  • 低位开始,从右往左,逐一判断是否进位
class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        digits[-1] += 1
        for i in range(len(digits)-1, 0, -1):
            if digits[i] == 10:
                digits[i] = 0
                digits[i-1] += 1
            else:
                return digits
        if digits[0] == 10:
            digits[0] = 0
            digits.insert(0, 1)
        return digits

方法二

  • 映射函数 map()
class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        num = int("".join(map(str, digits))) + 1
        return [int(char) for char in str(num)]

2. 小结

  1. 数组逆序
range(10, 0, -1) # [10, 9, 8, ..., 1]
  1. 映射函数 map()
map(str, nums) #  [1, 2, 3] -> ['1', '2', '3']

你可能感兴趣的:(66. Plus One)