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

二分查找模板全集

🔍 二分查找模板全集(Java 无歧义版)


✅ 模板一:查找最小满足条件的值(lower bound)

适用于:
在一个范围 [left, right] 中,找 最小的满足条件 的数。

模板:

int left = L, right = R;
while (left < right) {int mid = left + (right - left) / 2; // 中点靠左if (check(mid)) {right = mid;   // mid 可能是答案,收缩右边界} else {left = mid + 1; // mid 不满足,排除左半部分}
}
return left; // left == right,为最小可行值

特点:

  • 循环条件是 <
  • 右边界始终不丢
  • 适用于 “找最小可行值”

例子:

找最小的 x,使得 x^2 >= target


✅ 模板二:查找最大满足条件的值(upper bound)

适用于:
在一个范围 [left, right] 中,找 最大的满足条件 的数。

模板:

int left = L, right = R;
while (left < right) {int mid = left + (right - left + 1) / 2; // 中点靠右,避免死循环if (check(mid)) {left = mid;      // mid 满足,尝试更大} else {right = mid - 1; // mid 不满足,排除右半部分}
}
return left; // left == right,为最大可行值

特点:

  • 循环条件 <
  • 左边界始终不丢
  • 适用于 “找最大可行值”

例子:

找最大的 x,使得 x^2 <= target


✅ 模板三:查找目标元素(标准二分查找)

适用于:
在有序数组中,找 target 的索引。

模板:

int left = 0, right = nums.length - 1;
while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {return mid;} else if (nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}
}
return -1; // 未找到

特点:

  • 循环条件是 <=
  • 精确查找目标
  • 退出后 left 是插入位置(如果需要)

🧠 模板对比表

目标循环条件mid计算方式区间收缩返回值场景
最小满足条件while (left < right)mid = left + (right - left) / 2right = mid / left = mid + 1left二分答案题(如最小时间)
最大满足条件while (left < right)mid = left + (right - left + 1) / 2left = mid / right = mid - 1left找最大可行值
精确查找值while (left <= right)mid = left + (right - left) / 2left = mid + 1 / right = mid - 1mid 或 -1数组查找

📘 总结口诀(记忆法)

类型口诀
最小可行值while(left < right),右=mid,左=mid+1
最大可行值while(left < right),左=mid,右=mid-1,mid右取
精确查找值while(left <= right),三分支
http://www.dtcms.com/a/483902.html

相关文章:

  • FPGA基础 -- cocotb仿真之任务调度cocotb.start_soon与asyncio的使用注意事项
  • 图片生成网站建站之星多语言
  • 镇江牛吧企业网站建设与推广公司谷歌推广新手教程
  • 免费扑克网站域名查询官网入口
  • Grafana图表与电话交换机的结合
  • 【vue】NoticeBar:滚动通知栏组件手动实现(内容、速度、循环间隔可配置)
  • 绘制网站地图施工企业的施工生产计划与建设
  • 电子商务平台网站建造温州网站开发定制
  • 永康市网站建设关键词排名优化网站建设公司哪家好
  • 花卉网站建设的总结与杂志制作 wordpress主题
  • 外卖网站那家做的好个人网站设计论文范文
  • 【数位dp】3704. 统计和为 N 的无零数对|2419
  • 快速学制作网站株洲seo优化公司
  • 【Datawhale组队学习】math-for-ai TASK01
  • 个人网站主页模板wp用户前端化专业版wordpress插件[中英双语]
  • 看设计比较好的网站在线装修设计平台
  • 网站建设目标分析学校网站建设工作方案
  • 【Linux】Linux驱动开发与BSP开发:嵌入式系统的两大基石
  • 郑州机械网站建设张家港网站制作服务
  • 动叫建个网站刷排名郑州高端做网站
  • 波矢 行波 和 相速度推导
  • LeetCode算法日记 - Day 72: 下降路径最小和、珠宝的最高价值
  • 天津专业智能建站wordpress 转换app
  • 周口市住房和城乡建设局门户网站wordpress邮件服务器怎么设置
  • 新版 网站在建设中...工信部 网站 备案
  • Flutter---showCupertinoDialog
  • 万州做网站seo优化一般包括哪些
  • 网站建设优化兼职在家漯河网站建设费用
  • 学校网站的英文一个人如何注册公司
  • 哪些网站用php余姚网站建设设计服务