66. 加一
阿新 • • 發佈:2021-02-05
給定一個由 整數 組成的 非空 陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。
你可以假設除了整數 0 之外,這個整數不會以零開頭。
示例1:輸入:digits = [1,2,3]
輸出:[1,2,4]
解釋:輸入陣列表示數字 123。
示例2:輸入:digits = [4,3,2,1]
輸出:[4,3,2,2]
解釋:輸入陣列表示數字 4321。
示例 3: 輸入:digits = [0]
輸出:[1]
提示: 1 <= digits.length <= 100
思路: 這道題有兩個邊界[9, 9, 9], [0, 0, 0, 1]
這道題的直接思路就是轉換成字串, 拼接, 轉換成int加1, 轉字串, 再分割 如下圖
[1, 2, 3]-->['1', '2', '3']-->'123'-->123-->124-->'124'-->['1', '2', '4']
但是有個問題就是[0, 0, 0, 1]的情況很難轉換, 所以使用列表倒序進行一一操作
第一版程式碼
class Solution: def plusOne(self, digits: List[int]) -> List[int]: digits.reverse() flag = 0 for i in range(len(digits)): if i == 0: digits[i] += 1 else: digits[i] += flag flag = 0 if digits[i] == 10: digits[i] = 0 flag = 1 else: break if flag == 1: digits.append(1) digits.reverse() return digits