2018-06-19 LeetCode66

题目描述

给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:

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

示例 2:

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

我的解法

从这个数的最低位加起,逢10进1,同时考虑9···9的情况。

class Solution:
    def plusOne(self, digits):
        digits[-1]=digits[-1]+1
        for i in range(len(digits))[::-1]:
            if digits[i] == 10 and i != 0:
                digits[i]=0
                digits[i-1]=digits[i-1]+1
            elif digits[i] == 10 and i == 0:
                digits[0]=0
                digits.insert(0,1)
        return digits

最优解法

很神奇,这道题目竟然没有出现超长数导致超越范围溢出的问题,直接将数组转换成一个数字就ok了。。

class Solution:
    def plusOne(self, digits):
        sum=0
        for i in digits:
            sum=10*sum+i
        return [int(x) for x in str(sum+1)]

你可能感兴趣的:(2018-06-19 LeetCode66)