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

算法基础-二分查找

左闭右闭 [ 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.kler.cn/news/312259.html

相关文章:

  • 2025秋招LLM大模型多模态面试题(六)-KV缓存
  • 亿级数据表多线程update锁表问题
  • 浅谈人工智能之基于ollama本地大模型结合本地知识库搭建智能客服
  • 2024最新版,人大赵鑫老师《大语言模型》新书pdf分享
  • 嵌套函数的例子(TypeScript)
  • QT QObject源码学习(二)
  • Netty源码解析-请求处理与多路复用
  • uniapp中使用picker-view选择时间
  • vulhub搭建漏洞环境docker-compose up -d命令执行报错以及解决方法汇总
  • 信息收集常用指令
  • PDF样本册如何分享到朋友圈
  • Qt自定义信号、带参数的信号、lambda表达式和信号的使用
  • elemntui el-switch 在表格内改变状态失败,怎么复原???
  • 一文读懂SpringCLoud
  • 【RabbitMQ 项目】服务端数据管理模块之交换机管理
  • prometheus监控linux虚拟机
  • 操作系统迁移(CentOs -> Ubuntu)
  • Wacom 和 Splashtop 携手共赴 IBC 2024 展会,宣布向欧洲市场隆重推出 Wacom Bridge
  • XSS漏洞挖掘利用总结(附个人常用payload)
  • MyBatis 分批次执行(新增,修改,删除)
  • ROS激光雷达介绍
  • WPF中图片的宫格显示
  • TPDO触发条件如何满足?
  • AI学习指南深度学习篇-Adam的Python实践
  • 如何配置和使用自己的私有 Docker Registry
  • python的6种常用数据结构
  • 3.大语言模型LLM的公开资源(API、语料库、算法库)
  • Python中的树与图:构建复杂数据结构的艺术
  • 图论三元环(并查集的高级应用)
  • 天润融通创新功能,将无效会话转化为企业新商机