【一天一道LeetCode】#374. Guess Number Higher or Lower

来源:互联网 发布:mysql主键自增长删除后 编辑:程序博客网 时间:2024/06/03 16:47

一天一道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github
欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处

(一)题目

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.

来源: https://leetcode.com/problems/guess-number-higher-or-lower/

(二)解题

题目大意:猜数游戏,1~n里面的数,首先你心里想一个数num,让对方猜,对方每猜一个数你都要判断比num大还是小,直到对方猜对!
解题思路:采用二分搜索法来猜数效率最高。注意int guess(int num)函数用来返回大还是小。

// Forward declaration of guess API.// @param num, your guess// @return -1 if my number is lower, 1 if my number is higher, otherwise return 0int guess(int num);class Solution {public:    int guessNumber(int n) {        int i = 0;        int j = n;        //二分查找法        while(i<=j)        {            int mid = i+(j-i)/2;//取中点            int flag = guess(mid);//返回大于、小于或等于            if(flag == 0) return mid;            else if(flag == -1) j = mid-1;            else i = mid+1;        }        return 0;    }};
0 0
原创粉丝点击