Leetcode -- 加一(66)

题目描述:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。

   

具体思路:这里的加一可以分为三种情况:

  1. 列表中的最后一个字符不为9时:直接对最后一个字符进行+1操作即可
  2. 列表中的最后一个字符为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

                      

猜你喜欢

转载自www.cnblogs.com/shawn-young/p/12579386.html