We are playing the Guess Game. The game is as follows:spa
I pick a number from 1 to n. You have to guess which number I picked.code
Every time you guess wrong, I'll tell you whether the number is higher or lower.blog
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:leetcode
n = 10, I pick 6.
Return 6.
解法一: 遞歸get
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; } } }
解法二:循環it
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; }
其餘解法,參考:class