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.
    


    这道题和刚刚那道first bad version几乎一模一样,同样考虑到相加溢出问题而选择mid = left + (right - left) / 2;

    刚开始没理解 My number is lower 中的my指的是给出值还是猜的值更小出现错误。


    我的代码如下:

    // 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) {
            int left = 1, right = n;
            int mid;
            while (left < right) {
                mid = left + (right - left) / 2;
                int result = guess(mid);
                if (result == 0) return mid;
                if (result == 1) left = mid + 1;
                else right = mid - 1;
            }
            return left;
        }
    };
  • 相关阅读:
    124. 二叉树中的最大路径和
    快速排序,归并排序
    剑指offer ——重建二叉树
    共享指针的简单实现
    string_自定义
    幸运的袋子
    动态规划——出差问题
    计算数组平均值
    时间格式化并算差值
    适配器模式
  • 原文地址:https://www.cnblogs.com/zmj97/p/7502697.html
Copyright © 2011-2022 走看看