我正在使用递归为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)
答案 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]