leetcode反轉整數

2021-08-28 06:48:31 字數 1116 閱讀 3815

題目:反轉整數

給定乙個 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 請根據這個假設,如果反轉...