二分查找easy难度题。
/**
* Forward declaration of guess API.
* @param num your guess
* @return -1 if num is higher than the picked number
* 1 if num is lower than the picked number
* otherwise return 0
* int guess(int num);
*/
class Solution {
public:
int guessNumber(int n) {
if (n==1) return 1;
int left = 1, right = n;
int mid = left + (right - left) / 2; // 防止整型越界
while (left < right) {
if (left < right - 1) {
if (guess(mid) == -1) {
right = mid - 1;
} else if (guess(mid) == 1) {
left = mid + 1;
} else {
return mid;
}
} else {
if (guess(left) == 0) return left;
if (guess(right) == 0) return right;
}
mid = left + (right - left) / 2;
}
return left;
}
};