Leetcode第7題正數反轉

2021-10-09 01:37:16 字數 1140 閱讀 5060

最近開始學習演算法,先直接在力扣上做簡單的題目,發現長時間不做手特別生,考慮步驟提交好多次都提交不上去

題目要求:

自己的思路:

從末位開始,依次拿到乙個數

將每次拿到的數放到依次排開

按照自己的思路實現了一下,一直提交不通過,後來才發現很多數字反轉後可能超出 int 的取值範圍。所以這樣的考慮太過於簡單。

如果有乙個數是1111111119,這個數是小於最大的32位整數2147483647,但是將這個數反過來卻遠大於2147483647,因此這個數是不合法的。

確定 int 的取值範圍為[-2^31, 2^31-1]

首先看對於正數部分,各個位上的數字全部是小於等於 7 ,所以當對這個數取余時發現有大於 7 的數那麼他一定會溢位。

所以,我們到【最大數的1/10】時,就要開始判斷了

如果這個數字大於214748364 那後面就不用再判斷了,肯定溢位了

如果莫格數字等於214748364 ,這是需要跟最大數的末尾數字比較,如果這個數斃還大,說明溢位了

對於負數部分

從【最大數的1/10】時,就要開始判斷了

如果莫格數字小於-214748364 說明溢位了

如果莫格數字等於-214748364 ,還需要跟最小的末尾比較,即看它是否小於 8

class

solution

if(res <

-214748364

||(res ==

-214748364

&& temp

))res = res *

10+ temp;

// 將取到的數字反轉重要一步

x /=10;

}return res;

}}

LeetCode第7題 整數反轉

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

整數反轉 leetcode力扣第7題

要注意的一點是整型溢位的判斷是在反轉後,所以只要用長整型儲存反轉結果,然後再判斷是否超出整型範圍就可以。本來這道簡單題也不至於做不出來,但是這個整型溢位的問題,我糾結了很久,以為是輸入就要判斷,所以記錄一下這個坑點。class solution int nums 33 int length 0 wh...

Leetcode 7 正數反轉 學習感悟

反轉數字是個很簡單的問題,只需不斷取模累乘即可,int正數的範圍是2147483647,負數的範圍為 2147483648當把這個數反轉時,大於2147483647,則 會發生溢位,所以這道題的關鍵在於判斷是否溢位。正數有如下幾種情況 res int max 10,這種情況無論t為多大,都不會溢位 ...