美文网首页
leetcode--66--加一

leetcode--66--加一

作者: 北海bei | 来源:发表于2020-03-09 14:26 被阅读0次
    北木.jpg

    题目描述:

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

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

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


    解题思路1:

    从数组末位开始判断,如果尾数是9的情况加1再进位,一旦不需要进位就加1返回。


    代码1:

    class Solution(object):
        def plusOne(self, digits):
            size = len(digits)
            for i in range(size-1, -1, -1):
                if digits[i] != 9:
                    digits[i] += 1
                    return digits
                else:
                   digits[i] = 0
            digits.insert(0, 1) # 针对999情况
            return digits
    s = Solution()
    digits = [8,9,9]
    print(s.plusOne(digits))
    

    解题思路2:

    反转列表,然后遍历其中的元素,对其执行+1操作,如果有进位,则记录


    代码2:

    class Solution(object):
        def plusOne(self, digits):
            digits = digits[::-1]
            flag = 1
            for index,item in enumerate(digits):
                digits[index] += flag
                flag = int(digits[index]/10)
                if flag == 1:
                    digits[index] = 0
            if flag == 1:
                digits.append(1)  # 类似999的情况
            return digits[::-1]
    
    s = Solution()
    digits = [1, 2, 3, 4]
    print(s.plusOne(digits))
    

    解题思路3:

    数组中的元素转换为数字,然后+1,再转换为列表


    代码3:

    class Solution(object):
        def plusOne(self, digits):
            num = int(''.join([str(item) for item in digits]))
            print(num)
            num += 1
            return [int(item) for item in str(num)]
    
    s = Solution()
    digits = [9,9,9,9]
    print(s.plusOne(digits))
    

    题目来源:

    https://leetcode-cn.com/problems/plus-one

    相关文章

      网友评论

          本文标题:leetcode--66--加一

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