python int对象中的错误无法下标,

时间:2019-09-24 17:35:20

标签: python python-3.x recursion

我正在使用递归为leetcode问题Plus one写一个简单的代码。

问题如下:

  

给出一个非空的数字数组,该数字表示一个非负整数,   加一个整数。

     

数字被存储为使得最高有效位在   列表的头,数组中的每个元素都包含一个   数字。

     

您可以假定该整数不包含任何前导零,除了   数字0本身。

当输入为[9, 9]时,第7行出现错误。

我的代码如下:

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        i=-1
        j=-len(digits)
        k=0
        def recur(i,digits):
            if digits[0]==0:
                return [1]
            if i==j:
                if digits[i]==9:
                    digits[i]=0
                    digits.insert(0,1)
                    return digits
                else:
                    digits[i]=digits[i]+1
                    return digits
            if digits[i]==9:
                digits[i]=0
                return recur(digits,i-1)
            digits[i]=digits[i]+1
            return digits
        return recur(i,digits)

1 个答案:

答案 0 :(得分:0)

如果最后一位为9,则可以使函数除最后一位以外的所有位上递归加一,并在其后附加0;否则,只需在最后一位上加上一个即可。如果输入为空,请返回一位数字1,以便可以处理到新的数字:

def plusOne(digits):
    if not digits:
        return [1]
    if digits[-1] < 9:
        return digits[:-1] + [digits[-1] + 1]
    return plusOne(digits[:-1]) + [0]

这样:

print(plusOne([1, 2, 3]))
print(plusOne([2, 9, 9]))
print(plusOne([9, 9, 9]))

返回:

[1, 2, 4]
[3, 0, 0]
[1, 0, 0, 0]