更多题目移步【力扣简单题】
题目
难度:★☆☆☆☆
类型:数组
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
解答
本题相当于实现:
list(map(int, list(str(int(''.join(list(map(str, digits))))+1))))
这里我们用数组实现,我们考虑一下进位就好。
class Solution:
def plusOne(self, digits):
idx = len(digits)-1
while True:
digits[idx] += 1 # 当前位+1,这里的1既可以代表进位也可以代表数值+1
carry = digits[idx] // 10 # 获取进位
digits[idx] %= 10 # 更新当前位数值
idx -= 1 # 下标前移
if not carry or idx < 0: # 如果进位为零或者下标越界,跳出循环
break
if carry: # 如果进位不为零,需要增加一个最高位
digits.insert(0, 1) # 在列表0位置处插入1
return digits
如有疑问或建议,欢迎评论区留言~