給出乙個 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...