[LeetCode 374] Guess Number High
2019-05-30 本文已影响0人
灰睛眼蓝
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 :
Input: n = 10, pick = 6
Output: 6
Solution : Binary Search
/* The guess API is defined in the parent class GuessGame.
@param num, your guess
@return -1 if my number is lower, 1 if my number is higher, otherwise return 0
int guess(int num); */
public class Solution extends GuessGame {
public int guessNumber(int n) {
if (n <= 0) {
return 0;
}
int start = 1;
int end = n;
while (start + 1 < end) {
int middle = start + (end - start) / 2;
if (guess (middle) == 0) {
return middle;
}
if (guess (middle) == 1) {
start = middle + 1;
} else if (guess (middle) == -1) {
end = middle - 1;
}
}
if (guess (start) == 0) {
return start;
} else if (guess (end) == 0) {
return end;
}
return 0;
}
}