题目:
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 // Forward declaration of guess API. 2 // @param num, your guess 3 // @return -1 if my number is lower, 1 if my number is higher, otherwise return 0 4 int guess(int num); 5 6 class Solution { 7 public: 8 int guessNumber(int n) { 9 int low=1,high=n; 10 int mid; 11 while(low<=high){ 12 mid=low+(high-low)/2; //直接写mid=(low+high)/2会溢出 13 if(guess(mid)==0){ 14 return mid; 15 } 16 else if(guess(mid)==-1){ 17 high=mid-1; 18 } 19 else{ 20 low=mid+1; 21 } 22 } 23 return mid; 24 } 25 };