LeetCode刷題系列 7

2021-10-24 07:22:38 字數 1085 閱讀 5534

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

示例 1:

輸入:

123輸出:

321

示例 2:

輸入:

-123

輸出:-

321

示例 3:

輸入:

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 ...