題目:反轉整數
給定乙個 32 位有符號整數,將整數中的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−2^31, 231 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0。
…這種題目做過很多遍了但是還沒有形成系統,這次就好好記錄一下這個吧
剛開始沒明白rev的作用
還是以12345為例
pop分別等於5 4 3 2 1
rev=5;
rev=5x10+4;
rev=54x10+3;
…就這樣最後乙個rev算完就相當於顛倒過來的樣子
//pop operation:
pop = x % 10;
x /= 10;
//push operation:
temp = rev * 10 + pop;
rev = temp;
這裡著重的是乙個判斷溢位的問題
對於官方的解釋不是很明白
先貼到這裡
**為了便於解釋,我們假設 rev是正數。
如果 temp=rev⋅10+pop導致溢位,那麼一定有 rev≥intmax\10。
如果 rev>intmax\10,那麼 temp=rev⋅10+pop 一定會溢位。
如果 rev==intmax\10,那麼只要 pop>7,temp=rev⋅10+pop 就會溢位。
當 rev 為負時可以應用類似的邏輯。**
所以問題來了,第三種情況為什麼是pop>7呢!!!
懂了!!!!!啊!!!!!
比方說19/10=1 1*10+pop要求<=19所以這裡的pop如果》9就會溢位
同理2^31-1最後一位是7
so …
that』all.
**如下:
class solution
return rev;
}}
leetcode 整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321示例 2 輸入 123 輸出 321示例 3 輸入 120 輸出 21注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數...
LeetCode 整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數溢位那麼就返回 0。題目並不難,重點在於處理溢位問題。int max 2147483647 int min...
Leetcode 整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉...