LeetCode 解題練習:Plus One
題目原文描述 https://leetcode.com/problems/plus-one/ 中文描述 給定一個用陣列 digits 表示大整數 large integer,digits[i] 代表大整數的第 i 位數之值。例如 12345 會以 digits = [1, 2, 3, 4, 5] 來表示。請將 digits 的數值加一。 範例一: 輸入 digits = [9,9,9,9] 輸出 [1, 0, 0, 0, 0] 說明:整數 9999 加一後為 10000。 範例二: 輸入 digits = [2, 2, 3, 4, 5] 輸出 [2, 2, 3, 4, 6] 說明:整數 22345 加一後為 22346。 解法: 這是一題非常經典的 LeetCode 基礎題(Plus One)。這題的核心考點在於「如何處理進位(Carry)」,特別是當連續出現數字 9 ,或是整個陣列都是 9 的極端情況(Corner Case)。 以下為您將這個演算法的邏輯、步驟與程式碼做更深入、詳細的拆解與說明: 💡 核心解題邏輯 我們從小學數學的直式加法可以知道,加 1 都是從 最右邊的個位數 開始加。這時候會遇到三種情況: 普通情況(無進位) :最右邊的數不是 9(例如: [1, 2, 3] )。我們直接把個位數加 1 變成 [1, 2, 4] ,任務就結束了。 部分進位 :結尾有連續的 9(例如: [1, 2, 9] )。個位數的 9 加 1 變成 10,必須 進位 。所以個位數變成 0 ,再往前看十位數的 2 ,它不是 9,所以加 1 變成 3 。結果為 [1, 3, 0] ,任務結束。 全數進位(極端情況) :所有數字都是 9(例如: [9, 9, 9] )。每個位置都會因為進位變成 0 ,最後陣列會變成 [0, 0, 0] 。這時候我們必須在 最左邊手動補一個 1 ,讓它變成 [1, 0, 0, 0] 。 注意:若目前 digits[i] 為 9 ,將 digits[i] 設定為 0;否則 digits[i] 加一並回傳 digits。若每位數都是9,在最左邊補1。 🛠️ Python 程式碼 class Solution : def plusOne ( self, d...