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

【算法】二分

1. 找到有序区间中 =x 最左边的数字的位置

    static int getL(int a[], int l, int r, int x) {while (l < r) {int mid = l + r >> 1;if (x <= a[mid]) {r = mid;} else {l = mid + 1;}}if (a[l] != x) return -1;return l;}

2. 找到有序区间中 =x 最右边的数字的位置

    static int getR(int a[], int l, int r, int x) {while (l < r) {int mid = l + r + 1 >> 1;if (x < a[mid]) {r = mid - 1;} else {l = mid;}}if(a[l] != x) return -1;return l;}

r = mid - 1;int mid = l + r + 1 >> 1;的操作是绑定的

3. 找到有序区间中 >=x 第一个数字的位置

    static int lowerBound(int a[], int l, int r, int x) {if (x > a[r]) return -1;while (l < r) {int mid = l + r >> 1;if (x <= a[mid]) {r = mid;} else {l = mid + 1;}}return l;}

4. 找到有序区间中 >x 第一个数字的位置

    static int upperBound(int a[], int l, int r, int x) {if (x >= a[r]) return -1;while (l < r) {int mid = l + r >> 1;if (x < a[mid]) {r = mid;} else {l = mid + 1;}}return l;}

5. 总结

  1. 循环条件都是 l < r
  2. getLlower_bound是一样的,除了最后的判断 l 是不是目标值
  3. getRupper_bound的区别在于left = mid+1 还是让right=mid-1
    1. 如果是获取= x 的最右边的位置,那么当 x<a[mid] 的时候,说明目标位置还在左边的区间,right=mid-1
    2. 如果是获取>x 的最左边的位置,那么当 x<a[mid] 的时候,说明 mid 的大小不够,需要向右移动,此时 mid 位置的值不需要考虑,left = mid+1
  1. “最左”判定条件都是 <=
http://www.lryc.cn/news/485748.html

相关文章:

  • ARM CCA机密计算安全模型之简介
  • 蓝桥杯-洛谷刷题-day3(C++)
  • K8S资源限制之ResourceQuota
  • 释放高级功能:Nexusflows Athene-V2-Agent在工具使用和代理用例方面超越 GPT-4o
  • MongoDB索引操作和执行计划Explain()详解
  • H3C NX30Pro刷机教程-2024-11-16
  • 无插件H5播放器EasyPlayer.js网页web无插件播放器vue和react详细介绍
  • HarmonyOS ArkUI(基于ArkTS) 开发布局 (中)
  • org.springframework.context.support.ApplicationListenerDetector 详细介绍
  • MSTP实验
  • Linux---shell脚本
  • Android12的ANR解析
  • 初学人工智不理解的名词3
  • ADS项目笔记 1. 低噪声放大器LNA天线一体化设计
  • J.U.C - 深入解读阻塞队列实现原理源码
  • 【大语言模型学习】LORA微调方法
  • Spring Boot【一】
  • H.265流媒体播放器EasyPlayer.js H.264/H.265播放器chrome无法访问更私有的地址是什么原因
  • 【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩
  • Dart:字符串
  • 平衡二叉搜索树之 红黑 树的模拟实现【C++】
  • 2:Vue.js 父子组件通信:让你的组件“说话”
  • 6. Keepalived配置Nginx自动重启,实现7x24提供服务
  • 【PS】蒙版与通道
  • C++创建型模式之生成器模式
  • 鸿蒙NEXT应用示例:切换图片动画
  • postgresql(功能最强大的开源数据库)继承特性和分区实现
  • 论文笔记(五十六)VIPose: Real-time Visual-Inertial 6D Object Pose Tracking
  • 微服务治理详解
  • “南海明珠”-黄岩岛(民主礁)领海基线WebGIS绘制实战