leetcode 66. Plus One

Posted 将者,智、信、仁、勇、严也。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 66. Plus One相关的知识,希望对你有一定的参考价值。

Given a non-empty array of digits representing a non-negative integer, plus one to the integer.

The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.

You may assume the integer does not contain any leading zero, except the number 0 itself.

Example 1:

Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Example 2:

Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

解法1,用加法思想:
class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        # [0]=>[1]
        # [1]=>[2]
        # [9]=>[1, 0]
        # [1, 0]=>[1, 1]
        # [1, 9]=>[2, 0]
        # [9, 9]=>[1, 0, 0]
        # [1,2,3]=>[1,2,4]
        # xxxx9999
        """        
        i = len(digits)-1     
        while i >= 0 and digits[i]+1 > 9:
            digits[i] = digits[i]+1-10
            i -= 1
        if i < 0:
            digits.insert(0, 1)
        else:
            digits[i] += 1
        return digits
        

 or:

class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        # [0]=>[1]
        # [1]=>[2]
        # [9]=>[1, 0]
        # [1, 0]=>[1, 1]
        # [1, 9]=>[2, 0]
        # [9, 9]=>[1, 0, 0]
        # [1,2,3]=>[1,2,4]    
        rd = []
        carry = 0
        digits[-1] += 1
        for d in digits[::-1]:
            cs = carry + d
            rd.insert(0, cs % 10)
            carry = cs//10
        if carry:
            rd.insert(0, carry)
        return rd
        

 

解法2,本质上就是xxxx9999,找到第一个x:

class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        # [0]=>[1]
        # [1]=>[2]
        # [9]=>[1, 0]
        # [1, 0]=>[1, 1]
        # [1, 9]=>[2, 0]
        # [9, 9]=>[1, 0, 0]
        # [1,2,3]=>[1,2,4]
        # xxxx9999
        i = len(digits)-1
        while i>=0 and digits[i] == 9:
            digits[i] = 0
            i -= 1
        if i >= 0:
            digits[i] += 1
        else:
            digits.insert(0, 1)
        return digits
        

 



以上是关于leetcode 66. Plus One的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode-66 Plus One

leetcode 66. Plus One

[LeetCode] 66. Plus One

[leetcode]66.Plus One

leetcode66 Plus One

[leetcode]66Plus One