题目地址:
https://www.lintcode.com/problem/guess-number-higher-or-lower/description
猜数字游戏,从
1
∼
n
1\sim n
1∼n选一个数字,然后另一个人猜,猜高了返回
−
1
-1
−1,猜低了返回
1
1
1,猜中了返回
0
0
0。给出int guess(int num)
这个函数,要求猜出这个数。
二分即可。代码如下:
public class Solution extends GuessGame {
/**
* @param n an integer
* @return the number you guess
*/
public int guessNumber(int n) {
// Write your code here
int l = 0, r = n;
while (l < r) {
int mid = l + (r - l >> 1);
if (guess(mid) == 0) {
return mid;
} else if (guess(mid) == -1) {
r = mid - 1;
} else {
l = mid + 1;
}
}
return l;
}
}
class GuessGame {
int guess(int num) {
return 0;
}
}
时间复杂度 O ( log n ) O(\log n) O(logn),空间 O ( 1 ) O(1) O(1)。