可通过的代码:
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