题目描述
给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
我的解法
从这个数的最低位加起,逢10进1,同时考虑9···9的情况。
class Solution:
def plusOne(self, digits):
digits[-1]=digits[-1]+1
for i in range(len(digits))[::-1]:
if digits[i] == 10 and i != 0:
digits[i]=0
digits[i-1]=digits[i-1]+1
elif digits[i] == 10 and i == 0:
digits[0]=0
digits.insert(0,1)
return digits
最优解法
很神奇,这道题目竟然没有出现超长数导致超越范围溢出的问题,直接将数组转换成一个数字就ok了。。
class Solution:
def plusOne(self, digits):
sum=0
for i in digits:
sum=10*sum+i
return [int(x) for x in str(sum+1)]
网友评论