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

算法基础-二分查找

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

相关文章:

  • LeetCode:1184. 公交站间的距离 一次遍历数组,复杂度O(n)
  • 牛客周赛 Round 60(A,B,C,D,E,F)
  • vueCropper裁剪图片(不模糊)以及记录使用方法
  • 【HTML】HTML页面和常见标签
  • 鸿蒙 ArkUI组件二
  • PHP 实现 redis 分布式锁
  • vue3 自定义el-tree树形结构样式
  • 【网络安全】分享4个高危业务逻辑漏洞
  • 【装机教程】Visual Studio Community 2019离线安装
  • NumPy 线性代数
  • 家装材料之水泥,最容易被忽视的基础材料!
  • openstack之keystone介绍
  • 【图像拼接】基于SIFT/SURF特征算法的图像拼接,matlab实现
  • 《微信小程序实战(2) · 组件封装》
  • LaTex2024 下载安装运行HelloWorld—全流程笔记
  • Golang | Leetcode Golang题解之第404题左叶子之和
  • 基于yolov8+lprnet的中文车牌识别系统python源码+pytorch模型+精美GUI界面
  • 电信创维光猫DT741超级密码
  • PostgreSQL的流复制断点续传
  • 【bug】通过lora方式微调sdxl inpainting踩坑
  • [Python可视化]数据可视化在医疗领域应用:提高诊断准确性和治疗效果
  • css <样式一>
  • Linux 文件 IO 管理(第一讲)
  • Uniapp + Vue3 + Vite +Uview + Pinia 实现购物车功能(最新附源码保姆级)
  • 人工智能和大模型的简介
  • java -- JDBC
  • supermap iclient3d for cesium模型沿路径移动
  • 基于AlexNet实现猫狗大战
  • 1.接口测试基础
  • 使用mlp算法对Digits数据集进行分类