Leetcode——66.加一


@author: ZZQ
@software: PyCharm
@file: leetcode66_加一.py
@time: 2018/11/29 16:07
要求:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:

输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

思路: 注意9999+1=10000这种情况

class Solution():
    def __init__(self):
        pass

    def plusOne(self, digits):
        """
            :type digits: List[int]
            :rtype: List[int]
        """
        dig_len = len(digits)
        ans = [0]*(dig_len+1)
        for i in range(dig_len-1, -1, -1):
            ans[i+1] = digits[i]
        # print ans
        s = [0]*dig_len
        for i in range(dig_len, -1, -1):
            if i == dig_len:
                if ans[i] == 9:
                    ans[i] = 0
                    s[i-1] = 1
                else:
                    ans[i] = ans[i] + 1
            else:
                if ans[i] + s[i] > 9:
                    ans[i] = 0
                    s[i-1] = 1
                else:
                    ans[i] = ans[i] + s[i]
        if ans[0] != 0:
            return ans
        else:
            return ans[1:]
posted @ 2018-11-29 16:14  恩zzq我是  阅读(102)  评论(0编辑  收藏  举报