[数组][二分]374. Guess Number Higher or Lower

题目:374. Guess Number Higher or Lower

We are playing the Guess Game. The game is as follows:
I pick a number from 1 to n. You have to guess which number I picked.
Every time you guess wrong, I'll tell you whether the number is higher or lower.

You call a pre-defined API guess(int num) which returns 3 possible results (-1, 1, or 0):

-1 : My number is lower
1 : My number is higher
0 : Congrats! You got it!

Example:
n = 10, I pick 6.
Return 6.

猜数字,给一个范围[1,n],猜了以后用 guess(int num)告诉是猜对,还是猜大/小了。

二分查找。

public class Solution extends GuessGame {
    public int guessNumber(int n) {
        int low = 1, high = n;
        int pick = low + (high - low) / 2;
        while(low <= high && guess(pick) != 0){
            if (guess(pick) == 1) low = pick +1;
            else high = pick -1;
            pick = low + (high - low) / 2;
        }
        return pick;
        
    }
}

减少调用guess(num)的次数,return那里返回low或high都可以,因为跳出循环的时候,low=high。

public class Solution extends GuessGame {
    public int guessNumber(int n) {
        int low = 1, high = n;
        int pick;
        int tip;
        while(low < high){
            pick = low + (high - low) / 2;
            tip = guess(pick);
            if(tip == 0) return pick;
            else if (tip == 1) low = pick + 1;
            else high = pick - 1;
           
        }
        return high;//or low
        
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,357评论 0 33
  • 美好的时间总是悄然而逝,不知不觉,我已经加入365天成长营2个多月了。这一段时期,我收获了太多,有太多的感动,太多...
    宁博Villa阅读 1,342评论 2 3
  • 写这个原因:有些人的文章废话多,排版无序,word排完并看完,竟发现是一篇废文。
    akira_preview阅读 3,398评论 0 0
  • Activity或者view类中都有ontouchEvent回调方法,来接收touch事件,一个完整的手势是从AC...
    小瓜子儿姑娘阅读 2,695评论 0 1
  • 和同事闲聊天,聊起来,早上为什么起床?回答是:为了挣钱罢!那还用问?你难道不是为了挣钱?我一般的回答是我是来公司赚...
    丨张伟丨阅读 3,237评论 0 0

友情链接更多精彩内容