![](https://img.haomeiwen.com/i434653/84548a31df6d3a5d.png)
题目地址:加一
思路1:自拟思路——一本正经的暴力拆逻辑
1、列表最后一个数字+1
2、当最后一个为9时,最后一位变为0,倒数第二位+1
3、如果从最后起有n个9,则这n个全部变为0,倒数n+1位+1
4、如果全部是9,全部变为0,再在首位添加1
总结: 看完思路2再说。
用时:68 ms
digits=[9,0,1,9,9]
def plusOne1(digits):
#如果全部是9,则特殊处理
if len(set(digits))==1 & (9 in set(digits)):
result=[1]+[0]*len(digits)
#统计从末尾倒数有几个连续的9
else:
result=digits.copy()
result.reverse()
length=0
for i in result:
if i!=9:
break
else:
length+=1
#如果没有9
if length==0:
result[0]+=1
result.reverse()
#如果有少于列表长度的9
else:
result=[0]*length+result[length:]
result[length]+=1
result.reverse()
return result
思路2:自拟思路——这不就是数字相加么
通过str和int的转换,然后组合分拆结果。
总结: 生活好苦,题刷了半天才恍然大悟。
用时:44 ms
def plusOne2(digits):
d_str=[str(i) for i in digits]
d=int("".join(d_str))
d+=1
d_list=list(str(d))
result=[int(i) for i in d_list]
return result
网友评论