You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode 374:两种猜数字解法的差异困惑求解答

LeetCode 374 猜数字问题:两种解法的差异解析

首先明确LeetCode 374中guess()函数的返回值定义:

  • 返回-1:你猜的数字大于目标数字,需要缩小上界,往更小的范围查找
  • 返回1:你猜的数字小于目标数字,需要扩大下界,往更大的范围查找
  • 返回0:猜对了,直接返回当前数字

错误解法的核心问题

错误解法完全搞反了guess()返回值对应的区间调整逻辑:

int l = 1;
int h = n;

while(l<=h){
    int mid = l+(h-l)/2;
    // 当guess返回-1,说明mid > 目标,应该把上界h设为mid-1,缩小到左半区
    if (guess(mid) == -1){
        l = mid+1; // 错误:反而扩大下界,往更大数字查找,逻辑彻底颠倒
    }
    // 当guess返回1,说明mid < 目标,应该把下界l设为mid+1,扩大到右半区
    else if (guess(mid) == 1){
        h = mid-1; // 错误:反而缩小上界,往更小数字查找,完全南辕北辙
    }
    else if (guess(mid) == 0){
        return mid;
    }
}
return l;

这种逻辑错误会导致查找区间完全偏离目标,无法定位到正确数字,甚至提前跳出循环返回错误结果。

正确解法的逻辑正确性

正确解法严格遵循guess()返回值的定义调整查找区间:

int low = 1;
int high = n;

while(low<=high){
    int mid = low+(high-low)/2;
    if(guess(mid)==0){
        return mid;
    } 
    // guess返回1,说明mid < 目标,去右半区查找,更新下界
    else if(guess(mid)==1){
        low = mid+1;
    } 
    // 剩余情况为返回-1,说明mid > 目标,去左半区查找,更新上界
    else{
        high = mid-1;
    }
}
return low;

每一步的区间调整都和guess()的提示匹配,能逐步缩小范围,最终精准定位到目标数字。

内容的提问来源于stack exchange,提问作者Marcus Mousavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 10:50:59