題目來源:
https://leetcode.com/problems/plus-one/description/
題目分析:
本題它字面上的解釋有點沒有看懂,看了別人的解釋才理解。它的意思是給定一個數組,將期最後一個元素加1,然後返回新的數組,如果尾數進位了就需要它前面的一個元素加1表示進位。本題的思路是將這個數組先轉化成整數形式,然後進行相加,最後將結果再返回爲列表的形式。
實現代碼:
class Solution:
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
num=0
for i in range(len(digits)):
num=num*10+digits[i]
num=num+1
return([int(i) for i in str(num)]) %%要注意它這裏是怎麼將整數轉化爲列表形式的,需要學習
另外,還看到有人是直接將其當做列表在做。從它最後一個元素開始看,超過就該位歸0,向前進位。如果到第0位的時候大於9了,則需要向前進位,多一個1.其具體代碼如下:
class Solution:
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
length = len(digits)
for i in range(length - 1, -1, -1):
num = digits[i] + 1
if num > 9:
digits[i] = 0
if i == 0:
digits = [1] + digits %%注意這裏這種形式,則原列表的最頂端會多個1
else:
digits[i] += 1
break
return digits