位運算 201 數字範圍按位與

2021-10-06 14:49:54 字數 622 閱讀 8166

給定範圍 [m, n],其中 0 <= m <= n <= 2147483647,返回此範圍內所有數字的按位與(包含 m, n 兩端點)。

示例 1:

輸入:[5

,7]輸出:

4

示例 2:

輸入:[0

,1]輸出:

0

解題

方法1:位移

所有數字按位與,即找到所有數字的公共字首

所有數字的公共字首,即最大和最小數字的公共字首;

故將m和n右移,直到相等後左移回來,返回值即為公共字首;

class

solution

return m<;

方法2:與位移

n&(n-1)可將n最右邊的1置為0;

將n右邊的置零直到不大於m,則此時m在與n相同的字首後面都為0,然後返回m&n即可得到m與n的字首和;

class

solution

};

201 數字範圍按位與

給定範圍 m,n 其中 0 m n 2147483647,返回此範圍內所有數字的按位與 包含 m,n 兩端點 示例 1 輸入 5,7 輸出 4 示例 2 輸入 0,1 輸出 0 方法一 位移 思路鑑於上述問題的陳述,我們的目的是求出兩個給定數字的二進位制字串的公共字首,這裡給出的第乙個方法是採用位移...

201 數字範圍按位與

給定範圍 m,n 其中 0 m n 2147483647,返回此範圍內所有數字的按位與 包含 m,n 兩端點 示例 1 輸入 5,7 輸出 4 示例 2 輸入 0,1 輸出 0 1.暴力 2.規律,len n len m return 0 len n len m 將m,n 二進位制,m和n從左起相同...

201 數字範圍按位與 lecot

給定範圍 m,n 其中 0 m n 2147483647,返回此範圍內所有數字的按位與 包含 m,n 兩端點 示例 1 輸入 5,7 輸出 4 示例 2 輸入 0,1 輸出 0 思路 1.這道題剛看見時,很容易想到迭代所有的數字進行按位與,但因為次數太多會超時 解題規律 sss0 x,sss1 x ...