一、题目
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头.
例1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
例2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
二、解法
我们需要判断会不会产生进位的情况,所以我们可以设置一个状态变量 carry
当它为1的时候,就说明当前位数值需要加1
当当前位数值为9时,加1就需要进一位,即 carry
仍为1,否则 carry
赋值为0
倒序遍历数组
最后判断 carry
为1或者0,为1时,在数组头部加1
代码如下:
carry=1
l = len(digits)
for x in range(-1,-l-1,-1):
if(digits[x]==9 and carry==1):
digits[x]=0
carry = 1
elif(carry==1):
digits[x] += 1
carry = 0
if(carry==1):
digits.insert(0, 1)
return digits
时间 44ms,击败了 99.5%
结语
欢迎关注我的公众号
疯子的Python笔记