給定範圍 [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 ...