超出时间限制
来源:11-10 LeetCode:374. 猜数字大小

weixin_慕神2105054
2021-03-10
为什么这里用位运算来除2,会超出时间限制
var guessNumber = function(n) {
let l=1,r=n,mid;
while(l<=r){
//mid=Math.floor((l+r)>>2)
mid=Math.floor((l+r)/2);
const state=guess(mid);
if(!state){
return mid;
}else if(state===1){
l=mid+1;
}else{
r=mid-1;
}
}
};
写回答
2回答
-
可能死循环了,打个console log看看,另外你的位运算是除以四吧……
012021-03-12 -
慕莱坞3126862
2021-04-05
研究了一下, JS中第32个位是不能访问的. 如果使用">>", 在处理第32位为1的大数的情况下(比如3829520109-> 二进制: 11100100010000011101011011101101), 位运算>>不会填充符号位. 即第32位的1不会改变, 因此会输出负数.
处理这种情况使用无符号位移运算符即可">>>".
不过JS对位运算的处理机制比较特殊, 看了一圈发现大家都不推荐使用位运算...
10
相似问题