• LeetCode 374. Guess Number Higher or Lower


    原题链接在这里:https://leetcode.com/problems/guess-number-higher-or-lower/

    题目:

    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 (-11, 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.

    题解:

    Binary Search, guess mid为0则return mid. guess mid为-1, 就在左半面继续猜. guess mid 为1, 就在右半面继续猜.

    Time Complexity: O(logn). Space: O(1).

    AC Java:

     1 /* The guess API is defined in the parent class GuessGame.
     2    @param num, your guess
     3    @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
     4       int guess(int num); */
     5 
     6 public class Solution extends GuessGame {
     7     public int guessNumber(int n) {
     8         int l = 1;
     9         int r = n;
    10         while(l <= r){
    11             int mid = l + (r-l)/2;
    12             int result = guess(mid);
    13             if(result < 0){
    14                 r = mid-1;
    15             }else if(result > 0){
    16                 l = mid+1;
    17             }else{
    18                 return mid;
    19             }
    20         }
    21         return -1;
    22     }
    23 }

    类似First Bad Version.

  • 相关阅读:
    C#
    C#
    C#
    创建一个ROS包
    创建一个工作空间
    ROS的文件系统
    单一职责原因
    策略模式
    UML类图
    简单工厂模式
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/6351273.html
Copyright © 2020-2023  润新知