美文网首页
2018-06-19 LeetCode66

2018-06-19 LeetCode66

作者: Betrayer丶 | 来源:发表于2018-06-19 09:51 被阅读0次

    题目描述

    给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。
    最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
    你可以假设除了整数 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

          本文链接:https://www.haomeiwen.com/subject/hazoeftx.html