這道題是二分查找的使用。需要注意的是,求mid不可以用(right + left)/ 2,因爲可能會越界,超過int的最大值,應該用(right - left)/ 2 + left。
// Forward declaration of guess API.
// @param num, your guess
// @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
int guess(int num);
class Solution {
public:
int guessNumber(int n) {
int left = 1, right = n;
while(left <= right){
int mid = (right - left) / 2 + left;
int d = guess(mid);
if(d == -1)right = mid - 1;
else if(d == 1)left = mid + 1;
else return mid;
}
}
};