猜数字大小、
Guess Number Higher or Lower
解
方法一:暴力法
// 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) {
for (int i = 0; i < n; i++) {
if (guess(i) == 0) {
return i;
}
}
return n;
}
};
结果
TLE…
方法二:二分法
// 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 = 0, right = n;
while (left <= right) {
int mid = left + (right - left) / 2;
int g = guess(mid);
if (g == 0) {
return mid;
} else if (g < 0) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
};
结果