066 plus one
66. Plus One
题目: https://leetcode.com/problems/plus-one/
难度 : Easy
这里是用的递归,很容易理解,如果空列表直接加1,最后一位小于9,那么直接就最后一位加1,否则添加一个0,然后再把余下的递归加1
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
if digits == []:
return [1]
if digits[-1] < 9:
return digits[:-1] + [digits[-1] + 1]
else:
return self.plusOne(digits[:-1]) + [0]
其实可以考虑循环,效率更高,参考此处
从低位到高位,如果后一位有进位的话,那么该位要加上一,否则退出循环。如果最高位也进位,那么在列表前要插入一个一。
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
carry = 1
for i in range(len(digits)-1,-1,-1):
digits[i] += carry
if digits[i] < 10:
carry = 0
break
else:
digits[i] -= 10
if carry == 1:
digits.insert(0,1)
return digits