美文网首页
[LeetCode 374] Guess Number High

[LeetCode 374] Guess Number High

作者: 灰睛眼蓝 | 来源:发表于2019-05-30 12:10 被阅读0次

    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 :

    Input: n = 10, pick = 6
    Output: 6
    

    Solution : Binary Search

    /* 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 {
        public int guessNumber(int n) {
            if (n <= 0) {
                return 0;
            }
            
            int start = 1;
            int end = n;
            
            while (start + 1 < end) {
                int middle = start + (end - start) / 2;
                
                if (guess (middle) == 0) {
                    return middle;
                }
                
                if (guess (middle) == 1) {
                    start = middle + 1;
                } else if (guess (middle) == -1) {
                    end = middle - 1;
                }
            }
            
            if (guess (start) == 0) {
                return start;
            } else if (guess (end) == 0) {
                return end;
            }
            
            return 0;
        }
    }
    

    相关文章

      网友评论

          本文标题:[LeetCode 374] Guess Number High

          本文链接:https://www.haomeiwen.com/subject/ruvmtctx.html