加一

定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

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

执行用时 :48 ms, 在所有 Python3 提交中击败了81.01% 的用户
内存消耗 :13.8 MB, 在所有 Python3 提交中击败了5.64%的用户

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        #有两种情况,第一种,末尾不是9,最后一项直接加一,(digits[-1]+=1)返回digits
        if 0<=digits[-1]<9:
            digits[-1]+=1
            return digits
        #第二种情况,末尾是9
        else:
            #遍历digits,从后往前
            for i in range(len(digits)-1,-1,-1):
                #出现第一个不为9的数直接加一,循环结束,不再和9比较,返回digits
                if digits[i]!=9:
                    digits[i]+=1
                    return digits
                #将i和i后面的所有都为0
                j=i
                while j<=len(digits)-1:
                    digits[j] = 0
                    j+=1
            #当出现9,99,999等等这种情况时
            digits[0] = 1
            digits.append(0)
        return digits

在本地运行,需要在最后添加(if前面没有任何空格)

if __name__=='__main__':
    a=Solution()
    b=a.plusOne([1,1,1,9])
    c=a.plusOne([9])
    d=a.plusOne([9,9])
    e=a.plusOne([9,9,9])
    f=a.plusOne([1,1,1,1])
    print(b,c,d,e,f)

算法题目来自: https://leetcode-cn.com/problems/plus-one/

posted @ 2019-08-13 19:07  yunduoyun  阅读(224)  评论(0编辑  收藏  举报