Leetcode -- 加一(66)

Posted 神的孩子都在跳舞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

                      

 

以上是关于Leetcode -- 加一(66)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 66. 加一(java)

LeetCode66. 加一(C++)

leetcode算法66.加一

LeetCode数组-10(66)-数组表示的数加一

LeetCode刷题66-简单-加一

⭐算法入门⭐《线性枚举》简单09 —— LeetCode 66. 加一