题目描述:
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。
该数字按照大小进行排列,最大的数在列表的最前面。
样例
给定 [1,2,3]
表示 123, 返回 [1,2,4]
.
给定 [9,9,9]
表示 999, 返回 [1,0,0,0]
.
题目分析:
末尾[-1]加1,然后逆序循环,判断元素是否为10,然后处理;
特殊处理,[0]元素为10,需要在首位插入一个1.
源码:
class Solution:
# @param {int[]} digits a number represented as an array of digits
# @return {int[]} the result
def plusOne(self, digits):
# Write your code here
n = len(digits)
digits[-1] += 1
for i in range(-1,-n,-1):
if digits[i] == 10:
digits[i] = 0
digits[i-1] += 1
if digits[0] == 10:
digits[0] = 0
digits.insert(0,1)
return digits
def _plusOne(self, digits):
# Write your code here
digits.reverse()
n = len(digits)
digits[0] += 1
for i in range(n):
if digits[i] == 10:
digits[i] = 0
if i == n-1:
digits.append(1)
else:
digits[i+1] += 1
if digits[-1] == 10:
digits[-1] = 0
digits.append(1)
digits.reverse()
return digits