给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照大小进行排列,最大的数在列表的最前面。
样例
给定 [1,2,3]
表示 123, 返回 [1,2,4]
.
给定 [9,9,9]
表示 999, 返回 [1,0,0,0]
思路:对于数组构成的数进行加1,应当是从数组的末尾也就是数的个位开始加1。所以数组的遍历应当从数组的末位元素进行。
有两点需要注意,一个是进位的处理,还有一个是当数组元素都为9时,应当扩大数组长度以容纳新数组。
代码:
class Solution:
# @param digits, a list of integer digits
# @return a list of integer digits
def plusOne(self, digits):
for i in range(len(digits)-1, -1, -1): #从末位开始遍历数组
digits[i] = (digits[i] + 1) % 10 #求元素+1后的个位数
if digits[i]: #如果为0,则说明产生了进位,break后将进位的1加到前一个元素上
break;
else:
digits.insert(0, 1) #这里用insert方法将元素插入列表中
return digits
网友评论