需求
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 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]
代码
class Solution:# todo 方法一# 将原本列表中数字转化为字符串保存下来,再将字符串转化为整数,进行+1操作# 之后将操作后的数字转化为字符串进行便利,将便利结果追加到新的列表中def add_one(self,list_int):result=''result_list=[]for i in list_int:result+=str(i)# print(int(result))result=str(int(result)+1)# print(result)for i in result:result_list.append(int(i))return result_list# todo 方法二# 初始化一个进位变量 carry 为 1。# 从数组的最后一位开始,依次将当前位上的数字加上进位变量 carry。# 如果当前位的结果大于等于 10,则将进位变量 carry 设为 1,并将当前位的结果减去 10。# 如果当前位的结果小于 10,则将进位变量 carry 设为 0,并停止遍历。# 继续处理前一位,重复步骤 2-4,直到处理完所有位或进位变量 carry 变为 0。# 如果处理完所有位后,进位变量 carry 仍为 1,说明原数组的最高位有进位,需要在数组的头部插入一个 1。def plusOne(self,digits):carry = 1for i in range(len(digits) - 1, -1, -1):digits[i] += carryif digits[i] >= 10:digits[i] -= 10carry = 1else:carry = 0breakif carry == 1:digits.insert(0, 1)return digitsif __name__ == '__main__':call=Solution()list_int=[1,2,3,4]digits=[1,2,3,9]print(call.add_one(list_int))print(call.plusOne(digits))