leetcode刷題之旅簡單篇(2)整數反轉

2021-10-01 02:32:54 字數 1134 閱讀 2530

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

輸入: 123

輸出: 321

示例 2:

輸入: -123

輸出: -321

示例 3:

輸入: 120

輸出: 21

class solution    

return rev;}};

整數反轉的過程可以模擬於堆疊後進先出的操作,在不使用堆疊的情況下,處理整數問題時:

pop(彈出)操作可分為兩步進行:

pop = x%10;      ## 即假設輸入的數為x = 124,此時對x除10取餘操作,便取出了最後一位4

x/=10; ##「/」操作為第乙個數除以第二個數,如果是兩個整數,則保留整數部分。由此x便去掉了最後一位

經過一次彈出操作後,輸入x = 124,pop = 4,x去掉最後一位之後變成了12。

push(壓入)操作也可分為兩步進行:

int temp = 0;

temp = rev*10 + pop;

rev = temp;

其實做這道題時在紙上寫出這個過程後再結合**就很好理解了。

比如124,

第一次彈出 4 將 4 壓入「堆疊」 得到4

第二次彈出 2 將 2 壓入「堆疊」 得到42(410 +2)

第三次彈出 1 將 1 壓入「堆疊」 得到421(4210 + 1)

這道題還涉及到取值範圍的問題,比如輸入的數為2000000007 < intmax

但是反轉後的數為 70000000002> intmax 此時反轉後的數應該為 0,

當輸入的數為負數越界時亦如此。

具體情況如下,為了方便解釋,首先假設temp和rev都是正整數的情況,

其中要說明的是第二點,當rev>intmax/10 時此時 rev最小為 intmax+1 ,此時

temp > initmax 所以溢位了。

leetcode刷題筆記(簡單篇) 1 7

二 no7.整數反轉 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums ...

leetcode刷題筆記(簡單篇) 88 100

no100.相同的樹 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums...

LeetCode刷題之旅(簡單 15) 加一

2019年6月11日 目錄 題目 錯誤思路 資料型別轉換,運算 解決方法1 遞迴檢測進製 思路 效能結果 解決方法2 思路簡潔的解法 思路 效能結果 小結 public static int plusone int digits 2.string轉int並加1 long num long.value...