給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
示例 2:輸入:
123輸出:
321
示例 3:輸入:
-123
輸出:-
321
反轉乙個整數其實很簡單,只需要使用如下操作:輸入:
120輸出:
21
但是難點在於如何在乙個計算結果溢位之前發現它溢位了res =0;
while
(num!=0)
可以考慮以下:(先假設num為正數)
1.如果res = res*10+num%10溢位,那麼意味著res
∗10+n
ums%
10>in
t_ma
xres*10+nums\%10>int\_max
res∗10
+num
s%10
>in
t_ma
x,即res
>in
t_ma
x−nu
ms%10
10res>\frac
res>10
int_
max−
nums
%10
2.因此可以得到res
>in
t_ma
x10
res>\frac
res>10
int_
max
3.並且有num
s%
10>
7nums\%10 >7
nums%1
0>7
因此,我們可以在每次迴圈後判斷2、3兩點,即可判斷下一次操作是否會溢位;對於負數,我們只可以類推得到判斷條件
class
solution
return res;
return0;
}};
leetcode刷題系列
題目 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。解題思路 如果乙個整數不為0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,原來在1後面的所有的0都會變成1 如果最右邊的1後面還有0的話 其餘所有位將不會受到影響。舉個例子 乙個二進...
LeetCode刷題系列1
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...
LeetCode刷題系列4
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...