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)]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容