374 . Guess Number Higher or Lower
Easy
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.
2ms:
public int guessNumber(int n) {
if (guess(n) == 0) return n;
int left = 1, right = n;
while (left < right) {
int mid = left + (right - left) / 2, t = guess(mid);
if (t == 0) return mid;
else if (t == 1) left = mid;
else right = mid;
}
return left;
}
1ms:
public int guessNumber(int n) {
if(guess(n)==0) return n;
int leftp=1;
int rip=n;
int mid = gg(leftp,rip);
int res = guess(mid);
while(res!=0){
if(res<0)
rip=mid;
else
leftp=mid;
mid=gg(leftp,rip);
res=guess(mid);
}
return mid;
}
int gg(int le,int rh){return (rh-le)/2 + le;}
对照[LeetCode]278. First Bad Version
375 . Guess Number Higher or Lower II
Medium
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 I picked is higher or lower.
However, when you guess a particular number x, and you guess wrong, you pay $x. You win the game when you guess the number I picked.
Example:
n = 10, I pick 8.
First round: You guess 5, I tell you that it’s higher. You pay
5.Secondround:Youguess7,Itellyouthatit′shigher.Youpay
7.
Third round: You guess 9, I tell you that it’s lower. You pay $9.
Game over. 8 is the number I picked.
You end up paying
5+
7 +
9=
21.
Given a particular n ≥ 1, find out how much money you need to have to guarantee a win.