您的位置:首页 > 其它

Plus One

2016-07-27 10:24 162 查看
leetcode第66题,数组模拟一个大数,数组高位代表数字的低位,计算这个大数加1。

第一思路,运用python中提供的各种转换函数,先把列表攒成一个数字,然后执行加1操作,最后在拆分成列表。这种方法比较简单,但是不好处理0开头的情况。

第二思路:直接进行大模拟,模拟进位加法,但是不好处理缺位的情况,比如[9]应该返回[1,0]

我采用了第二思路。

class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
digits = digits[::-1]
n = len(digits)
if n == 0:
return [1]
add = 0
if digits[0]+1 >= 10:
add = 1
digits[0] = (digits[0]+1)%10
else:
add = 0
digits[0] += 1
for i in range(1,n):
if digits[i]+add >= 10:
digits[i] = (digits[i]+add)%10
add = 1
else:
digits[i] = digits[i]+add
add = 0
if add != 0:
digits.append(add)

return digits[::-1]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: