LeetCode题解(python)
66. 加一
题目描述
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
解题心得
本题比较简单,这里两种方法:
方法1:将列表变成一个整数,+1,然后再变成列表,时间复杂度为: O ( n ) O(n) O(n)
方法2:模拟真实的计算,从低位往高位依次计算,不过要注意很多条件,比如9+1,进位变0,最高位为0时列表要加一位。
解题代码
方法1:
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
num = str(int(''.join([str(i) for i in digits]))+1)
return [int(i) for i in num]
方法2:
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
# num = str(int(''.join([str(i) for i in digits]))+1)
# return [int(i) for i in num]
leg = len(digits)
for i in range(leg-1,-1,-1):
if leg == 1 and digits[leg-1] == 9:
return [1,0]
if digits[i] == 9:
digits[i] = 0
else:
digits[i] +=1
return digits
if digits[0] == 0:
digits = [1] + digits
return digits