每天一道LeetCode--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.
解法一: 递归
public int guessNumber(int n) { return guessNumber(1, n); } /*递归*/ private int guessNumber(int start,int end){ int mid=start+(end-start)/2; if(guess(mid)==-1){ return guessNumber(start,mid-1); }else if(guess(mid)==1){ return guessNumber(mid+1,end); }else{ return mid; } } }
解法二:循环
public int guessNumber(int n) { int low = 1; int high = n; while (low <= high) { int mid = low+(high-low)/2; int guessResult = guess(mid); if (guessResult == 0) return mid; if (guessResult == 1) low = mid+1; else if (guessResult == -1) high = mid-1; } return -1; }
其他解法,参考: