您的位置:首页 > 其它

[Leetcode]Bitwise AND of Numbers Range

2015-09-01 13:18 471 查看
Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.

For example, given the range [5, 7], you should return 4.

class Solution {
public:
/*algorithm : bit maputiation
(1)01 (1)10 (1)11-->100
left common part is the result
*/
int rangeBitwiseAnd(int m, int n) {
int mask = ~0;
while((m&mask) != (n&mask)){
mask = mask <<1;
}
return m&mask;
}
};

class Solution {
public:
/*algorithm : bit maputiation
(1)01 (1)10 (1)11-->100
left common part is the result
*/
int rangeBitwiseAnd(int m, int n) {
int i = 0;
while(m != n){
m >>= 1;
n >>= 1;
++i;
}
return m << i;
}
};


class Solution {
public:
/*algorithm : bit manipulation
using n&(n-1) to get rid of last 1
*/
int rangeBitwiseAnd(int m, int n) {
while(n > m){
n = n & (n-1);
}
return n;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 算法