可通过的代码:
class Solution
{
public:
int rangeBitwiseAnd(int m, int n)
{
int ret = 0;
for (int i = 0; m!=0 && n!=0 && i<31; n>>=1, m>>=1, i++)
{
ret += ((m%2!=0)&&m==n? (1<<i): 0);
}
return ret;
}
};class Solution
{
public:
int rangeBitwiseAnd(int m, int n)
{
int ret = 0;
for (int i = 0; i < 31; ++ i)
{
ret |= (((n-m)>(1<<(i+1)) || (n/(1<<i))%2==0 || (m/(1<<i))%2==0)? 0: (1<<i));
}
return 0;
}
};
LeetCode 201. Bitwise AND of Numbers Range
原文:http://blog.csdn.net/stephen_wong/article/details/46558569