当前位置: 首页 > news >正文

题解:AcWing 789 数的范围

【题目来源】

AcWing:789. 数的范围 - AcWing题库

【题目描述】

给定一个按照升序排列的长度为 \(n\) 的整数数组,以及 \(q\) 个查询。

对于每个查询,返回一个元素 \(k\) 的起始位置和终止位置(位置从 \(0\) 开始计数)。

如果数组中不存在该元素,则返回 -1 -1

【输入】

第一行包含整数 \(n\)\(q\),表示数组长度和询问个数。

第二行包含 \(n\) 个整数(均在 \(1\sim 10000\) 范围内),表示完整数组。

接下来 \(q\) 行,每行包含一个整数 \(k\),表示一个询问元素。

【输出】

\(q\) 行,每行包含两个整数,表示所求元素的起始位置和终止位置。

如果数组中不存在该元素,则返回 -1 -1

【输入样例】

6 3
1 2 2 3 3 4
3
4
5

【输出样例】

3 4
5 5
-1 -1

【解题思路】

image

【算法标签】

《AcWing 789 数的范围》 #二分#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 100010;  // 定义数组最大容量int n, m;  // n: 数组长度,m: 查询次数
int q[N];   // 存储有序数组int main() {// 输入数据scanf("%d%d", &n, &m);  // 读取数组长度和查询次数for (int i = 0; i < n; i++) scanf("%d", &q[i]);  // 读取有序数组// 处理每个查询while (m--) {int x;scanf("%d", &x);  // 读取要查询的数字// 二分查找左边界(第一个>=x的位置)int l = 0, r = n - 1;while (l < r) {int mid = (l + r) >> 1;  // 取中间点if (q[mid] >= x) r = mid;  // 中间值>=x,搜索左半部分else l = mid + 1;         // 否则搜索右半部分}// 检查是否找到xif (q[l] != x) {// 没找到,输出-1 -1cout << "-1 -1" << endl;} else {// 找到了,输出左边界cout << l << " ";// 二分查找右边界(最后一个<=x的位置)l = 0, r = n - 1;while (l < r) {int mid = (l + r + 1) >> 1;  // 注意这里要+1防止死循环if (q[mid] <= x) l = mid;    // 中间值<=x,搜索右半部分else r = mid - 1;            // 否则搜索左半部分}// 输出右边界cout << l << endl;}}return 0;
}

【运行结果】

6 3
1 2 2 3 3 4
3
3 4
4
5 5
5
-1 -1
http://www.jsqmd.com/news/397312/

相关文章:

  • 2026.2.20
  • R语言连接MySQL数据库的详细指南
  • 题解:AcWing 788 逆序对的数量
  • 题解:AcWing 787 归并排序
  • 第1.4节 最优化理论基础 习题练习
  • 题解:AcWing 786 第k个数
  • CSS 网页布局
  • Servlet 数据库访问
  • YOLO26改进26:全网首发--C3k2融合自研创新模块C3k2_GhostDynamicConv
  • YOLO26改进27:全网首发--C3k2融合自研改进模块RVB_EMA
  • jEasyUI 创建页脚摘要
  • MySQL 删除数据表
  • centos7 中 安装docker与使用
  • Ruby Socket 编程
  • Spring IOC容器:Bean生命周期与循环依赖解决
  • 2/20
  • 2026排阻行业佼佼者,这些厂商表现亮眼,低温漂高精密电阻/抗浪涌电阻/荣誉代理/排阻,排阻公司哪家强 - 品牌推荐师
  • Python use schedule as recycle timer
  • 被小黄狗唤醒的碎碎念
  • 提示工程架构师看过来!AI提示工程质量保证的10大关键维度
  • 大数据领域ClickHouse的权限管理与审计
  • 解析AI原生应用领域思维框架的独特魅力
  • HBase与Presto集成:交互式查询解决方案
  • 芒格的“数学期望“思维:提高投资决策的准确性
  • 深度探索ing!提示工程架构师在虚拟助手中的应用奥秘大公开
  • GitHub 热榜项目 - 日榜(2026-02-20)
  • Python-flask框架的网约车个人出行顺风车在线打车租车系统出租管理平台-Pycharm django
  • IDEA创建多级包时显示在同一行怎么办
  • Python-flask框架餐饮连锁店点餐食材采购管理系统的设计与实现-Pycharm django
  • 《牛津谋杀案》电影解析