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

二分法

  • 前提条件

这道题目的前提是数组为有序数组。 要求 O(log n) 时间复杂度, 如果你用线性扫描,复杂度是 O(n),直接违规。同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的。

  • 704注意
  1. 二分查找涉及的很多的边界条件,大家写二分法经常写乱,主要是因为对区间的定义没有想清楚,区间的定义就是不变量。要在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是循环不变量规则。

  2. 避免越界/ 防止整型溢出可以写mid=left+(right-left)/2

  3. 在二分查找中,mid的计算必须在 while循环内部,因为 left 和right在每次迭代中会动态更新。如果 mid 在循环外部定义(例如,放在 int right之后),它只计算一次,后续迭代中 mid 的值不会随 left 和 right 的变化而更新。

  4. 左闭右闭:两端都是有效元素;所以 r 必须是合法下标 → 最大是n - 1
    left<=right,[1,1]里=是有意义的,此时数组中有且仅有1这个数值。
    if(nums[mid] > target){right = mid - 1;},因为是左闭右闭,此时if已经判断出mid不是我们要找的,直接 - 1,不 - 1会超时。

  5. 左闭右开:左端有效;右端只是边界,不是元素
    int right = nums.size();,r 可以等于 n,因为我们根本不会访问 nums[r]
    while (left < right),这里使用 < ,因为left == right在区间[left, right)是没有意义的。
    if (nums[mid] > target) {right = mid;},因为当前nums[middle]不等于target,去左区间继续寻找,而寻找区间是左闭右开区间,所以right更新为mid,即:下一个查询区间不会去比较nums[mid]。

image-20260101165202419
image

  • 35注意
  1. 返回数组中第一个 >= target 的位置

  2. 我们用闭区间 [left, right],并且始终维护不变量:
    [0, left):一定 < target;(right, n-1]:一定 ≥ target;[left, right]:未知区间

  3. nums[mid] < target;left = mid + 1;此时左边一定没有target;
    nums[mid] >= target;right = mid - 1;mid可能就是答案,但右边一定不是更优解;
    就这样不断缩小区间

  4. 当循环结束时,[0,left)左边没target,left本身是第一个 >= target 的位置

1️⃣ 区间模型统一(闭区间 or 半开区间)
2️⃣ 每次更新都严格缩小区间
3️⃣ 循环不变量正确维护

image

  • 34注意
  1. left boundary = 第一个 ≥ target 的位置
    right boundary = 最后一个 ≤ target 的位置 = 第一个 > target 的位置 - 1

  2. 闭区间:right 是“元素” → 用 n-1
    半开区间:right 是“边界” → 用 n

http://www.jsqmd.com/news/188772/

相关文章:

  • 【课程设计/毕业设计】人工智能使用 CNN 进行森林火灾检测
  • 提示工程架构师实战案例:用Prompt生成的动漫表情包,成为了网络热梗!
  • COMSOL三维电弧放电模拟:温度场、流体场及电磁场分布研究
  • 【课程设计/毕业设计】人工智能基于深度学习方法的头盔佩戴检测研究与系统实现
  • 1.3 闲话
  • 深入解析:WPS绿色纯净版(无联网功能) v10.1.0.6876
  • 深度学习计算机毕设之基于深度学习方法的头盔佩戴检测研究与系统实现机器学习
  • 写论文软件哪个好?实测终极答案:虎贲等考 AI 凭 “学术全 buff” 封神!
  • 深度学习毕设项目:基于机器学习深度学习方法的头盔佩戴检测研究与系统实现
  • 学术写作AI工具全景测评:覆盖研究全流程的9大优选方案
  • 提示工程架构师必看!这10个技巧,帮你告别“加班常态化”
  • 计算机深度学习毕设实战-基于人工智能+深度学习方法的头盔佩戴检测研究与系统实现
  • 智能辅助学术写作:9款AI工具全方位提升开题与论文效率
  • 深度学习毕设选题推荐:基于深度学习方法+人工智能的头盔佩戴检测研究与系统实现
  • 市面上诚信的阻氧型铝合金衬塑复合管供货厂家,铝合金衬塑复合管、PERT铝合金衬塑复合管、PPR铝合金衬塑复合管厂家推荐 - 品牌推荐师
  • 论文写作全周期辅助:9款人工智能工具性能测评报告
  • 基于AI的学术写作效率提升:9款专业工具全流程评测
  • 【毕业设计】基于深度学习方法机器学习的头盔佩戴检测研究与系统实现
  • 规范虚拟机性能优化实战技术文章大纲
  • 离线地图开发 局域网部署 脱离互联网的离线地图API学习交流
  • phome_enewshyclass 数据表字段解释(好友分类表)
  • 单元测试
  • 单元测试
  • Everything这么快,Windows自带搜索​为啥做不到?
  • 瘫痪者用脑机接口意念操控虚拟无人机
  • 英语 12 种时态
  • 英语 12 种时态
  • 2025必备!8个AI论文工具,助研究生搞定论文格式与写作!
  • 英语_阅读_Future_待读
  • 基于微信小程序的旅游服务平台【源码+文档+调试】