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

算法学习之 二分

一、算法思想

   二分算法是不断将某一个区间一分为二,并将不符合要求的区间舍弃,达到快速缩小搜索范围最终找到目标值或确定目标不存在的高效算法。

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

    因为题中的数组为有序数组(非递减顺序排列),我们可以使用二分不断缩小查找范围直到得到结果。

class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {if(nums.size()==0) return {-1,-1};int left=0,right=nums.size()-1;//左int begin;while(left<right){int mid=(left+right)/2;if(nums[mid]<target){left=mid+1;}else right=mid;}     if(nums[left]!=target) return {-1,-1};begin=left;//右left=0;right=nums.size()-1;while(left<right){int mid=(left+right+1)/2;if(nums[mid]<=target){left=mid;}else right=mid-1;}     return {begin,left};}
};

二、注意事项

   二分算法通常需要注意以下三点:

1、循环条件(while(left<=right) 或者 while(left<right) 以及左右界限的移动方式)

2、中点的合理选取 (mid=(left+right)/2 或者 mid=(left+right+1)/2)

3、二分答案的正确性判断 

4、使用二分的前提是被搜索区间有序

   上面三项注意点需要结合具体题目分析。特别要注意的是,前面两点是较难判断的点也是我们常常重点考虑的点。因此第三点就更容易被我们所忽略,而一旦第三点发生错误整个代码就错了!

   所以一定要考虑二分答案是否符合题目要求!

三、练习

   1、P1873 [COCI 2011/2012 #5] EKO / 砍树 - 洛谷 (luogu.com.cn)

   

   上面题目中,我们通过二分查找找到最短的锯片长度。

   在哪里进行二分查找呢?就在从题目中推断出的锯片长度范围(0~树中最大长度)中查找。

   再处理下循环条件,这里的循环条件需要与目前所选择锯片长度是否符合题目要求相关联。

   当然别忘了判断一下在所写逻辑中得到的二分答案是否正确。

再看看另一道题:P2678 [NOIP 2015 提高组] 跳石头 - 洛谷 (luogu.com.cn)

   

   这道题目是要在有限的行动次数下让最短跳跃距离尽量的大,我们同样可以在最短跳跃距离的范围(0~终点距离起点的距离)中通过二分来查找到符合题目要求的最短距离。

   具体点说就是假设在二分查找中的当下的值就是最短跳跃距离通过判断要想达成这一要求需要多少行动点数(可用双指针求得)来决定循环条件。

四、总结

   当题目中要求某某最大/最小且伴随着有序序列(可能不会明白的告诉我们,需要自己发现或者处理)时就有可能需要用到二分算法(当然还可能是贪心、动态规划……),这时我们就可以把解题思路往哪方面靠。

   二分算法的难点就是循环条件的判断以及二分中点的选取,当然也别忘了检查二分答案的正确性。

    

   

   

    

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

相关文章:

  • Carboxyrhodamine 110 Alk,羧基罗丹明110-炔基在点击化学的应用
  • 日记 - 2025.9.26 读研日记(二)
  • 做网站数据库表设计优化大师win7官方免费下载
  • 中建建设银行网站电子邮箱
  • display ip routing-table 概念及题目
  • spring 第三级缓存singletonFactories的作用及@Async造成循环依赖报错原因分析
  • 什么是静态IP?静态IP和动态IP的对比
  • IP子网掩码的计算
  • 济南富新网站建设福州服务类网站建设
  • 网站设置快捷方式到桌面找大学生做家教的网站
  • 手机提词器APP对比测评
  • 【不背八股】18.GPT1:GPT系列的初代目
  • 体系化能力
  • 小谈:AR/VR(增强/虚拟现实)技术
  • 服务器建网站seo外链推广平台
  • Android studio图像视图和相对布局知识点
  • 网站备案主体空壳上不了国外网站 怎么做贸易
  • 适合设计制作公司的网站asp远吗宁波网站建设培训学校
  • 【AI论文】Qwen3-Omni技术报告
  • 门业网站 源码杭州亚运会闭幕式
  • 中裕隆建设有限公司网站考研资料找微信hyhyk1推广可以
  • LeetCode 3132.找出与数组相加的整数 II
  • 手机网站设计推荐微信电影网站建设教程
  • 【AI八股文】03-监督学习方案面试篇
  • 机器学习第十六章 基于RNN和注意力机制的自然语言处理
  • 上海建设摩托车官方网站中国宣布入境最新消息2023
  • 商城系统网站建设开发赤水市建设局官方网站
  • 韶关微网站建设阜阳企业做网站
  • 加查网站建设seo网络优化是什么工作
  • 海丰县建设局官方网站自己网站