题目
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。
示例 3:
输入:digits = [0] 输出:[1]
解题:
方法1:转为十进制数字后加1
再转回成列表。
class Solution: def plusOne(self, digits: List[int]) -> List[int]: sums = 0 for i in digits: sums = sums * 10 + i sums = str(sums+1) rt = list(map(int,list(sums))) if (dif:=len(digits)-len(rt))>0: for _ in range(dif): rt.insert(0,0) return rt
当然还可以使用 list -> str -> int -> str -> list的方法
对于[0,1]可能得到的值为2,目标是[0,2] ,同样只要补充上面最后一部分代码即可。
方法2:手动实现十进制(所有语言都适用)
class Solution(object): def plusOne(self, digits): # 从最低位开始做加法运算 for i in range(len(digits)-1, -1, -1): if digits[i] != 9: digits[i] += 1 return digits digits[i] = 0 #这是列表中所有元素均为9的情况 ans = [0] * (len(digits) + 1) ans[0] = 1 return ans