LeetCode 201. Bitwise AND of Numbers Range
通過可能なコード:
VS 2013でテストに成功し(n=1,m=1,出力1)、ネット上のテストに失敗した(n=1,m=1,プロンプト出力0)のコードを提出する:
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;
}
};
VS 2013でテストに成功し(n=1,m=1,出力1)、ネット上のテストに失敗した(n=1,m=1,プロンプト出力0)のコードを提出する:
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;
}
};