201. 数字范围按位与
题目
给你两个整数 left
和 right
,表示区间 [left, right]
,返回此区间内所有数字 按位与 的结果(包含 left
、right
端点)。
示例1
输入:left = 5, right = 7
输出:4
示例2
输入:left = 1, right = 2147483647
输出:0
提示
0 <= left <= right <= 2^31 - 1
分析
题目的本质为求left和right二进制下的公共前缀。
代码
public int rangeBitwiseAnd(int left, int right) {
int shift = 0;
while(left < right){
left >>= 1;
right >>= 1;
shift++;
}
return left<<shift;
}
结果
时间超过100%
内存超过63.10%