文章目录
  1. 1. 题意介绍
  2. 2. 代码区

题意介绍


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
n = 10, I pick 6. Return 6.

比较简单的题,用二分解决,但是有一个细节,导致多次才ac。
将lower+(higher-lower)/2写成(lower+higher)/2,两个结果应该相同,但是会报错,timelimited
,大数出错,应该是溢出,用后一个公式可以有效减少上限

代码区


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int guess(int num);
class Solution {
public:
int guessNumber(int n) {
if(guess(n)==0)
return n;
int lower = 1;
int higher = n;
while(lower<higher){
int temp = lower+(higher-lower)/2;
int t = guess(temp);
if(t==0)
{
return temp;
}
if(t==1)
lower = temp;
else
higher = temp;
}
return lower;
}
};
文章目录
  1. 1. 题意介绍
  2. 2. 代码区