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

【算法】day5 二分查找

  • 二分查找并不是只适用于有序序列,而是适用于任何能找到“二段性”的序列

  • 二分查找的间隔点并不一定是重点,也可以是 1/3、1/4.... 处,之所以选择 1/2,是因为它的查找效率是所有划分中最高的,这涉及到数学中的概率,不展开证明。

1、朴素二分查找

题目:704. 二分查找 - 力扣(LeetCode)

思路:

代码:

class Solution {public int search(int[] nums, int target) {int left = 0, right = nums.length-1;while(left <= right) {int mid = left+(right-left)/2;if(nums[mid] < target) left = mid+1;else if(nums[mid] > target) right = mid-1;else return mid;}return -1;}
}

模板总结

2、查找左/右边界的二分

题目:34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)

思路:

代码:

class Solution {public int[] searchRange(int[] nums, int target) {int left = 0, right = nums.length-1;int[] ret = new int[]{-1, -1};if(nums == null || nums.length == 0) return ret;// 找左边界while(left < right) {int mid = left + (right - left)/2;if(nums[mid] < target) left = mid+1;else right=mid;}if(nums[left] == target) ret[0] = left;left = 0;right = nums.length-1;// 找右边界while(left < right) {int mid = left + (right - left + 1)/2;if(nums[mid] > target) right = mid-1;else left = mid;}if(nums[left] == target) ret[1] = left;return ret;}
}

模板总结

 

http://www.dtcms.com/a/403767.html

相关文章:

  • 2016年做网站好不好上海百姓网
  • 什么是推免生?具备哪些条件才能保研成功?
  • 11. Linux 防火墙管理
  • 江苏专业网站建设公司电话手机淘宝官网首页
  • 百度 如何 关键字 网站域名 关联网站loading动画效果
  • 【大模型LLM面试合集】有监督微调_微调
  • 网站的广告语应该怎么做临海外发加工网
  • MySQL-主从复制
  • 杭州 网站设计制作怎么把图片做超链接到网站
  • 深度学习与大脑的关系是“模拟-验证-超越”的迭代循环
  • 05 初始化
  • Python print()函数详解
  • 2025 PHP7/8 实战入门:15 天精通现代 Web 开发——第 5 课:数组与字符串处理
  • 网站底部放什么wordpress免费主题 开源
  • 时态--10--现在完成进⾏时
  • 新手建站网站内做动图
  • 超越工具链整合:价值流智能时代的企业级DevOps平台选型之道
  • LLMs之ThinkingModel:DeepSeek-V3.1的简介、安装和使用方法、案例应用之详细攻略
  • 数组(Java基础语法)
  • Linux驱动:操作步骤
  • 刚体转动欧拉方程:从理论到卫星姿态控制的实践
  • 网站开发总结800字ui网页设计报价
  • sward入门到实战(6) - 如何有效管理文档版本
  • 股票跟单网站开发建设网站怎么赚钱
  • 浦江县建设局网站地方房产网站APP如何做
  • 详解ElasticSearch2-进阶使用
  • C++面试突击(3)
  • 非法获取计算机信息系统数据罪:技术中立的边界与法律责任
  • 408cpp学习之链表(二)
  • 攻防世界-Web-Training-WWW-Robots