【力扣】374.猜数字大小

374.猜数字大小

题目描述

猜数字游戏的规则如下:

  • 每轮游戏,我都会从 1n 随机选择一个数字。 请你猜选出的是哪个数字。
  • 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。

你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-110):

  • -1:我选出的数字比你猜的数字小 pick < num
  • 1:我选出的数字比你猜的数字大 pick > num
  • 0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick == num

返回我选出的数字。

示例 1:

输入:n = 10, pick = 6
输出:6

示例 2:

输入:n = 1, pick = 1
输出:1

示例 3:

输入:n = 2, pick = 1
输出:1

示例 4:

输入:n = 2, pick = 2
输出:2

提示:

  • 1 <= n <= 231 - 1
  • 1 <= pick <= n

解题方案

  • C 二分法
/**
 * Forward declaration of guess API.
 * @param  num   your guess
 * @return 	     -1 if num is higher than the picked number
 *			      1 if num is lower than the picked number
 *               otherwise return 0
 * int guess(int num);
 */
int guessNumber(int n) {
    int left = 1, right = n; // 定义左值、右值
    int mid = 0;             // 定义中值

    while (left <= right) {
        mid = left + (right - left) / 2; // 计算中值
        int ret = guess(mid);            // 猜数
        if (ret == 0) {
            return mid;
        } else if (ret == 1) {
            left = mid + 1; // 增大左值
        } else {
            right = mid - 1; // 减小右值
        }
    }
    return 0;
}

复杂度分析
时间复杂度为 O(log⁡n),n 为区间初始长度。
空间复杂度为 O(1)。

相关推荐

  1. 374.数字大小

    2024-04-01 14:34:03       41 阅读
  2. C/C++---------------LeetCode第374. 数字大小

    2024-04-01 14:34:03       47 阅读
  3. 每日一题】299数字游戏

    2024-04-01 14:34:03       44 阅读
  4. 数组Array】-370 区间加法

    2024-04-01 14:34:03       70 阅读
  5. 数据结构与算法】 344. 反转字符串

    2024-04-01 14:34:03       44 阅读
  6. 375周赛

    2024-04-01 14:34:03       54 阅读
  7. 376周赛

    2024-04-01 14:34:03       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 14:34:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 14:34:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 14:34:03       87 阅读
  4. Python语言-面向对象

    2024-04-01 14:34:03       96 阅读

热门阅读

  1. RuoYi-Vue-Plus(登录流程)

    2024-04-01 14:34:03       38 阅读
  2. css去除滑动框

    2024-04-01 14:34:03       42 阅读
  3. pgsql已有表设置主键自增

    2024-04-01 14:34:03       38 阅读
  4. C语言点h文件设置

    2024-04-01 14:34:03       44 阅读
  5. C++常见算法有哪些

    2024-04-01 14:34:03       36 阅读
  6. 东北大学软件学院计算机网络专业课-第一章总结

    2024-04-01 14:34:03       38 阅读
  7. 3月份 月总结

    2024-04-01 14:34:03       42 阅读
  8. SSRF漏洞详解

    2024-04-01 14:34:03       44 阅读
  9. 1、初识drf

    2024-04-01 14:34:03       45 阅读