zoukankan      html  css  js  c++  java
  • 374. 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.

    简单的猜高猜低,运用二分法折半寻找。
    在做题过程中,遇到了Time limit exceeded 百思不得其解
    另外发现 自己对于一般的算法没有什么概念,每次做题都是从简单的数学原创方法开始,
    找时间要去看一下算法的归纳,这样就可以在看见题目的同时知道对应的什么算法。
    下面是程序:
    // Forward declaration of guess API.
    // @param num, your guess
    // @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
    int guess(int num);
    
    class Solution {
    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;
        }
    };


  • 相关阅读:
    linux系统安装CRT上传插件
    一些常用的vim编辑器快捷键:
    IDS 源镜像端口添加
    查看windows、linux的SN
    Tomcat安装
    puppet配置问题统计
    使用puppet
    安装puppet
    XML 生成一个XML文件
    winform 重新启动程序(重新登录)
  • 原文地址:https://www.cnblogs.com/blackiesong/p/6408755.html
Copyright © 2011-2022 走看看