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%
这篇博客探讨了在给定整数区间[left, right]内,如何求所有数字的按位与结果。通过分析问题的本质,即找到left和right二进制表示的公共前缀,提供了一种解决方案。然而,给出的代码在执行效率上存在问题,导致时间超过100%和内存超过63.10%。优化代码将是解决这一性能挑战的关键。
983

被折叠的 条评论
为什么被折叠?



