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

     

    要完成的函数:

    int guess(int num);//api函数

    int guessNumber(int n) 

    说明:

    1、给定一个整数 n,从1到n中挑一个数出来,让你猜是哪个数。每次你猜一个数,调用一次api函数,返回0就代表刚好是这个数,你猜对了!如果返回-1,就表示你猜的数太大了,实际的数比这个小。如果返回1,就表示你猜的数太小了,实际的数比这个大。要求最终返回对的那个数。

    2、这道题很明显是一道二分查找的题目,手工写一个二分查找的代码。

    代码如下:(附详解)

        int guess(int num);
        int guessNumber(int n) 
        {
            int low=1,high=n,mid,t;
            while(low<=high)
            {
                mid=low+(high-low)/2;//写成 mid=(low+high)/2 可能会上溢
                t=guess(mid);
                if(t==0)
                    return mid;
                else if(t==-1)//实际的数比mid小
                    high=mid-1;
                else          //实际的数比mid大
                    low=mid+1;
            }
        }
    

    上述代码实测2ms,beats 100.00% of cpp submissions。

  • 相关阅读:
    Java日期时间差以及获取几天后或几天前
    java数组扩增的三种方式
    折半查找、冒泡排序和选择排序
    JavaSE-Map的三种循环
    Chrome浏览器showModalDialog兼容性及解决方案
    Integeter127与128
    statis代码块以及非static代码块之执行
    return、break、continue区别以及作用范围
    nodeJs + vue.js 小案例
    cordova CLI 命令
  • 原文地址:https://www.cnblogs.com/chenjx85/p/9125248.html
Copyright © 2011-2022 走看看