演算法題3 加一

2021-10-07 10:57:44 字數 1096 閱讀 1630

題目描述:

給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。

最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。

你可以假設除了整數 0 之外,這個整數不會以零開頭。

示例 1:

輸入: [1,2,3]

輸出: [1,2,4]

解釋: 輸入陣列表示數字 123。

示例 2:

輸入: [4,3,2,1]

輸出: [4,3,2,2]

解釋: 輸入陣列表示數字 4321。

解法一:

這個題要考慮三種情況:

1.加1之後一直到最高位都產生了進製。例如99→100。

2.加1之後產生了進製,但是在中途中斷了。例如209→210

3.最簡單的一種情況:當前位數值加1之後,沒有產生進製。例如20→21

考慮這三種情況,我們可以寫出**:

class

solution

//有進製就將此下標對應值設為0,迴圈到前一位進行加1

else

if(digits[index]==9

)//當前位沒有進製的情況

else}}

}

解法二:

我們可以考慮利用for迴圈,當末位加1之後,對10進行取餘,

如果餘數不為0,說明沒有進製,直接返回結果即可;

如果餘數為0,說明產生了進製,那麼迴圈到前一位進行加1,再取餘判斷是否有進製。

如果直到最高位加1之後都有進製,那麼可以申請乙個長度為length+1的陣列,將最高位設為1,其他為預設為0.

class

solution

}//如果一直到第一位都有進製,比如9,99,999……這些情況

//申請乙個length+1大小的陣列,將第一位置為1,其他為預設為0

digits =

newint

[len+1]

; digits[0]

=1;return digits;

}}

時間複雜度都是o(n).

LeetCode演算法題 加一plusOne

給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存乙個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2,1 輸出 4,3,...

python 玩轉leetcode演算法題 加1

最高位數字存放在陣列的首位,陣列中每個元素只儲存單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。輸入 1 2,3 輸出 1 2,4 解釋 輸入陣列表示數字 123 輸入 4 3,2 1 輸出 4 3,2 2 解釋 輸入陣列表示數字 4321。主要 class solution def ...

LeetCode刷題 加一

給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存乙個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。輸入 4,3,2,1 輸出 4,3,2,2 解釋 輸入陣...