题目描述:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。
具体思路:这里的加一可以分为三种情况:
- 列表中的最后一个字符不为9时:直接对最后一个字符进行+1操作即可
- 列表中的最后一个字符为9时:2.1 如果如果首字符为9,即需要就进位,则第一位为1,其他位置0;2.2 如果首字符不为0,则将为9的所有位数置0并进位
1 class Solution: 2 def plusOne(self, digits: List[int]) -> List[int]: 3 for i in range(1,len(digits)+1): 4 if digits[-i] != 9: #倒序遍历 5 digits[-i] += 1 6 return digits 7 digits[-i] = 0 #为9的位数置0 8 digits.insert(0,1) #如果需要进位则在首位插入1 9 return digits
另一种方法是,利用字符串和整型的转换直接来做,不涉及到什么算法
1 class Solution: 2 def plusOne(self, digits: List[int]) -> List[int]: 3 di_str = '' 4 for number in digits: 5 di_str += str(number) 6 di_num = int(di_str)+1 #将列表中的元素拼接成字符串后再转换为整型来加一 7 digits = [] #再转换成列表输出 8 for word in str(di_num): 9 digits.append(int(word)) 10 return digits