66.加一
此题没有别的考点,就是考察对数组的灵活运用
自己解法1
class Solution(object):
def plusOne(self, digits):
n = len(digits)
if digits[n-1] != 9: #情况1:[1],[9,1]
digits[n-1] += 1
return digits
if digits[n-1] == 9: #情况2:[9],[9,9,9],[2,9,9]
for i in range(n-1,-1,-1): #i从大到小
if digits[i] == 9:
digits[i] = 0
if digits[0] == 0:
return [1] + [0]*n
else:
digits[i] += 1
return digits
break
解法2
#情况一:末尾不是9,直接末尾数字+1
#情况二:末尾只有一个9,变成1.0
#情况三:末尾有多个9,找出全部的9,再变成1···0
class Solution:
def plusOne(self, digits):
n = len(digits)
for i in range(n - 1, -1, -1):
#找到第一个末尾不为9的,然后+1
if digits[i] != 9:
digits[i] += 1
#再把末尾都为9的全置为0
for j in range(i + 1, n):
digits[j] = 0
return digits
# 如果上面没有return的话,说明 digits 中所有的元素均为 9
return [1] + [0] * n