[LeetCode][Python]66. Plus One

Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.

You may assume the integer do not contain any leading zero, except the number 0 itself.

The digits are stored such that the most significant digit is at the head of the list.

思路:一开始没看懂题目的意思,后来才明白是用一个列表代表一个非负整数,然后在最后一位加一,求新返回的列表。需要考虑的是空列表,列表最后一位小于9,最后一位等于9等情况。

要设置一个进位,初始值为1,从最后一个元素循环,依次给列表元素加一,如果最后的元素小于等于9,就直接返回加一后的list,因为没有进位。如果有进位,则置位0。最后在列表的第一个位置插入1。

#!usr/bin/env  
# -*-coding:utf-8 -*-
class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        if len(digits) == 0:
            return [1]
        carry = 1
        for i in xrange(len(digits)-1, -1, -1):
            digits[i] += carry
            if digits[i] <= 9:
                return digits
            else:
                digits[i] = 0

        digits.insert(0, 1)
        return digits

if __name__ == '__main__':
    sol = Solution()
    digits = [2, 1, 9, 9]
    print sol.plusOne(digits)

你可能感兴趣的:([LeetCode][Python]66. Plus One)