Google/LintCode:E-Guess Number Game

来源:互联网 发布:fanuc数控系统编程入门 编辑:程序博客网 时间:2024/05/21 09:27

题目


题目来源:Link


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):

样例

n = 10, I pick 4 (but you don't know)

Return 4. Correct !



代码


/* The guess API is defined in the parent class GuessGame.   @param num, your guess   @return -1 if my number is lower, 1 if my number is higher, otherwise return 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        Long s=0L,e=n+0L;        while(s<=e){            Long m = (s+e)/2L;//如果用int,相加后会溢出            int flag = guess(Integer.valueOf(m.toString()));            if(flag==-1){                e = m-1;            }else if(flag==1){                s = m+1;            }else{                return Integer.valueOf(m.toString());            }        }        return 0;    }}