7 整數反轉

2021-09-28 19:45:07 字數 1205 閱讀 6756

方法:彈出和推入數字 & 溢位前進行檢查

思路

我們可以一次構建反轉整數的一位數字。在這樣做的時候,我們可以預先檢查向原整數附加另一位數字是否會導致溢位。

演算法

反轉整數的方法可以與反轉字串進行模擬。

我們想重複「彈出」 x 的最後一位數字,並將它「推入」到rev的後面。最後, rev 將與 x 相反。

要在沒有輔助堆疊 / 陣列的幫助下 「彈出」 和 「推入」 數字,我們可以使用數學方法。

但是,這種方法很危險,因為當temp= rev⋅10+pop 時會導致溢位。

幸運的是,事先檢查這個語句是否會導致溢位很容易。

為了便於解釋,我們假設rev是正數。

當rev為負時可以應用類似的邏輯。

官方的**有多餘,因為int型別最大數和最小數開頭的數字只能是1或2,所以如果有最後一次迴圈的話,pop的值一定為1或2,所以(rev == int_max / 10 && pop > 7)和(rev == int_min / 10 && pop < -8)判斷可以省略。

複雜度分析

時間複雜度:o(log(x)),x中大約有log 10(x) 位數字。

空間複雜度: o(1)。

解法2:

用long型別儲存更大的數。

7 整數反轉

鏈結 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321示例2 輸入 123 輸出 321示例 3 輸入 120 輸出 21注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後...

7 整數反轉

解法一 對輸入數字進行整除和取餘運算,並把輸出值乘以10後與每次取餘的結果相加,直到原資料變為0 每次迴圈,原數對10取餘 結果乘以10,同時原數對10整除。c int reverse int x return rev python def reverse self,x r 0 返回值 flag 1...

7 整數反轉

有些讀者反映我寫的內容太簡單,有時候看不懂思路,我以後會記得寫好思路。一 數值法 1.取出符號位 2.10一次取出x的每一位,再 10變為ans 3.判斷是否超出 output 0if x 0 flag 1else flag 1 x abs x while x 0 res x 10 x int x ...