算法基础-二分查找

news2024/11/18 13:32:34

左闭右闭 [ left,right ]        [1,1]可以    

while( left <= right )        
        if( a[mid] > target )
                right = mid - 1
        else if( a[mid] < target )
                left = mid + 1


左闭右开 [ left,right )        [1,1)不可以

while( left < right )        
        if( a[mid] > target )        已经>target,开区间right = mid
                right = mid
        else if( a[mid] < target )
                left = mid + 1

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int l, r;
        int[] a = new int[n];
        for(int i = 0; i < n; i ++)
            a[i] = in.nextInt();

        while(m -- > 0) {
            int first = -1, last = -1;
            int x = in.nextInt();
            l = 0;
            r = n - 1;
            while(l <= r) {
                int mid = (l + r) / 2;
                if(a[mid] > x) {
                    r = mid - 1;
                } else if(a[mid] < x) {
                    l = mid + 1;
                } else {
                    first = mid;
                    r = mid - 1;
                }
            }
            l = 0;
            r = n - 1;
            while(l <= r) {
                int mid = (l + r) / 2;
                if(a[mid] > x) {
                    r = mid - 1;
                } else if(a[mid] < x) {
                    l = mid + 1;
                } else {
                    last = mid;
                    l = mid + 1;
                }
            }
            System.out.println(first + " " + last);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2133043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业平板电脑轻薄与耐用并存

在现代工业环境中&#xff0c;工业平板电脑的应用越来越广泛。它们不仅需要具备轻薄的设计以便于携带和操作&#xff0c;还必须具备耐用性以应对恶劣的工作条件。 一、工业平板电脑的定义与特点 工业平板电脑是一种专为工业环境设计的计算设备&#xff0c;通常具备防尘、防水、…

MySQL分页查询(DQL)

因DataGrip我的激活到期&#xff0c;也没太多精力去破解&#xff0c;最后换了Navicat&#xff0c;实际上操作是一样的&#xff0c;不变。 先看我的表数据&#xff0c;以我的数据作为例子 基本语法 select 字段列表 from 表名 起始索引&#xff0c;查询记录数。 1.查询第1页员…

[数据集][目标检测]车油口挡板开关闭合检测数据集VOC+YOLO格式138张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;138 标注数量(xml文件个数)&#xff1a;138 标注数量(txt文件个数)&#xff1a;138 标注类别…

期权组合策略有什么风险?期权组合策略是什么?

今天期权懂带你了解期权组合策略有什么风险&#xff1f;期权组合策略是什么&#xff1f;期权组合策略是通过结合不同期权合约&#xff08;如看涨期权和看跌期权&#xff09;&#xff0c;以及标的资产&#xff08;如股票&#xff09;来实现特定投资目标的策略。 期权组合策略市…

2024.9.13 重拾数据库,不用就忘T-T

在之前学习Web的时候&#xff0c;电脑安装过mysql和navicate&#xff0c;所以安装步骤跳过 直接使用navicate创建一个新的连接&#xff0c;然后在这个连接里面新建数据库 新建数据库弹出要求如下图 一般的数据库学习教程都是字符集选择utf-8&#xff08;有中文&#xff09;&a…

PyTorch安装指南:轻松上手深度学习框架(CUDA)

PyTorch 是一个非常流行的开源深度学习框架&#xff0c;它支持动态图&#xff0c;这使得开发者能够更容易地构建和调试复杂的模型。PyTorch 可以运行在 CPU 上&#xff0c;也可以利用 NVIDIA 的 CUDA 平台加速计算&#xff0c;从而在 GPU 上执行。下面是如何在你的系统上安装 P…

JS面试真题 part5

JS面试真题 part5 21、说说对事件循环的理解22、JavaScript本地存储方式有哪些&#xff1f;区别及应用场景&#xff1f;23、大文件上传如何断点续传&#xff1f;24、ajax原理是什么&#xff1f;如何实现&#xff1f;25、什么是防抖和节流&#xff1f;有什么区别&#xff1f;如何…

如何在Windows10系统安装docker?

1.wsl安装 Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Window…

UE5 阴影通道

Shadow Pass Switch节点中 Default代表模型遮罩的效果 Shadow代表阴影的生成遮罩效果

Web开发:使用C#创建、安装、调试和卸载服务

目录 一、创建服务 1.创建项目&#xff08;.NET Framework&#xff09; 2.重命名 3.编写逻辑代码 二、安装服务 1.方案一&#xff1a;利用VS2022安装文件的配置 选择添加安装程序 安装文件的介绍及配置 ​编辑​ 重新编译 工具安装 2.方案二&#xff1a;编写bat脚本安…

SCRM电商管理后台Axure高保真原型 源文件

在电商行业蓬勃发展的今天&#xff0c;企业急需一个全面的客户关系管理&#xff08;CRM&#xff09;系统来优化他们的电商运营。我们的Scrm电商管理后台应运而生&#xff0c;它不仅是一个集中化的管理平台&#xff0c;更是企业提升客户互动和销售业绩的得力助手。 预览地址 ht…

yolo8训练自己的模型

1.数据源准备 1.1 准备图片资源 1.2 对图片资源标注&#xff0c;生成 对应的 .txt 文件&#xff0c;里面的数字表示 物体被标注的 x或y 等坐标点信息 1.2.1 标注工具下载以及使用教程参考 Windows 10下安装labelImg标注工具&#xff01;_labelimg windows exe 1.5版本-…

YOLOv5 Detect.py 改变检测框box线条的粗细,隐藏检测框的检测信息,只显示检测框box

Ctrl F 搜索 line_thickness 修改值 值越小 线条越细 hide-labels 隐藏检测框的类别信息 hide-conf 隐藏检测框的置信度信息

【OpenAPI】Spring3 集成 OpenAPI 生成接口文档

Spring3 集成 OpenAPI 生成接口文档 1. 依赖 Spring 版本&#xff1a;3.0.5 Java 版本&#xff1a;jdk21 OpenAPI 依赖&#xff1a; <!-- https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-starter-webmvc-ui --> <dependency><groupI…

jdk环境变量配置+eclipse配置jdk

文章目录 安装jdkjdk环境变量配置eclipse里边配置jdkeclipse覆盖率插件——EclEmma的安装和使用 安装jdk 在安装前可以先建两个文件夹&#xff0c;注意不要文件夹用英文&#xff0c;不要用中文&#xff0c;如图&#xff1a; 然后我们开始安装 然后就看我们有没有安装成功…

代码随想录day22|回溯法03

一、90.子集Ⅱ 90. 子集 II - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 这道题目和78.子集 (opens new window)区别就是集合里有重复元素了&#xff0c;而且求取的子集要去重。 那么关于回溯算法中的去重问题&#xff0c;在40.组合总和II (opens new window…

实际案例(7)你遇到这样的环境,如何解决?(这是一道讨论题)

服务器有两个外网的时候&#xff0c;如何都能通过外网访问服务 环境介绍&#xff1a;一个非常普通的环境&#xff0c;但是怪就怪在服务器这块&#xff0c;服务器有两个网卡&#xff0c;他本身有一个外网上网&#xff0c;这个时候客户想把这个服务器加入到防火墙的网络里面来&am…

为什么sqlynx是连接国产数据库的最佳选择?

1. 广泛的国产数据库支持 SQLynx除了国际上的主流数据库外&#xff0c;还支持多种国产数据库&#xff0c;如达梦、人大金仓、OceanBase、openGauss等。随着国产数据库市场的不断发展和成熟&#xff0c;越来越多的企业和机构开始选择国产数据库来满足其数据管理需求。SQLynx通过…

R134a制冷剂简介

目录 一、基本性质 二、环保特性 三、应用领域 1. 制冷空调行业 2. 工业制造行业 3. 气雾剂和推进剂行业 4. 发泡剂行业 5. 其他行业 四、使用注意事项 1. 安全性方面 2. 系统兼容性方面 3. 操作规范方面 4. 存储和运输方面 R134a制冷剂,也被称为四氟乙烷(CF3CH…

stm32 SPI通信外设(硬件SPI读写W25Q64)

理论 1.SPI外设简介 STM32内部集成了硬件SPI收发电路&#xff0c;可以由硬件自动执行时钟生成、数据收发等功能&#xff0c;减轻CPU的负担 可配置8位/16位数据帧、高位先行/低位先行 时钟频率&#xff1a; fPCLK / (2, 4, 8, 16, 32, 64, 128, 256) 支持多主机模型、主或从操作…