首页 > 编程语言 >算法笔记2:二分

算法笔记2:二分

时间:2024-09-18 13:54:06浏览次数:3  
标签:二分 边界 int mid 笔记 算法 查找 check

二分

二分可以求得满足条件的左边界或右边界,如下图所示
在这里插入图片描述
查找左边界(绿色区域的最左边):

int SL(int l, int r)
{
    while (l < r)
        {
            int mid = l + r >> 1;
            if (check(mid)) r = mid; 
            else l = mid + 1; 
        }   
    return l;
}

应用场景:

  1. 找大于等于数的第一个数 (满足某个条件的第一个数)
  2. 查找最小值 (满足该边界的左边界)

查找右边界(红色区域的最右边):

int SR(int l, int r) 
{
    while (l < r)
        {                   
            int mid = l + r + 1 >> 1; //需要+1 防止死循环
            if (check(mid)) l = mid;
            else r = mid - 1; 
        }
    return r; 
}

应用场景:

  1. 找小于等于数的最后一个数 (满足某个条件的最后一个数)
  2. 查找最大值 (满足该边界的右边界)

标签:二分,边界,int,mid,笔记,算法,查找,check
From: https://blog.csdn.net/m0_53185556/article/details/142329848

相关文章

  • FFmpeg开发笔记(五十一)适合学习研究的几个音视频开源框架
    很多程序员想学习音视频的编程开发,却不知从何学习,因为音视频技术的体系庞大、知识杂糅,一眼望去就令人生怯。那么学习音视频建议站在前人的肩膀上,从优秀的音视频开源框架开始钻研,先熟悉这些开源工具的具体用法,再深入了解这些开源框架的实现代码。有鉴于此,博主整理了几个流行的音视频......
  • 【每日一题】LeetCode 2332.坐上公交的最晚时间(数组、双指针、二分查找、排序)
    【每日一题】LeetCode2332.坐上公交的最晚时间(数组、双指针、二分查找、排序)题目描述给你一个下标从0开始长度为n的整数数组buses,其中buses[i]表示第i辆公交车的出发时间。同时给你一个下标从0开始长度为m的整数数组passengers,其中passengers[j]表示第......
  • 多输入多输出 | Matlab实现SMA-BP黏菌算法优化BP神经网络多输入多输出预测
    多输入多输出|Matlab实现SMA-BP黏菌算法优化BP神经网络多输入多输出预测目录多输入多输出|Matlab实现SMA-BP黏菌算法优化BP神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料预测效果基本介绍多输入多输出|Matlab实现SMA-BP黏菌算法优......
  • 2024年JCR一区极光优化算法+分解对比!VMD-PLO-Transformer-BiLSTM多变量时间序列光伏功
    中秋献礼!2024年中科院一区极光优化算法+分解对比!VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测目录中秋献礼!2024年中科院一区极光优化算法+分解对比!VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测效果一览基本介绍程序设计参考资料效果一览......
  • 【数据结构和算法实践-树-LeetCode112-路径总和】
    数据结构和算法实践-树-LeetCode112-路径总和题目MyThought代码示例JAVA-8题目给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和targetSum。如果存在,返回true;否则......
  • C++学习笔记(26)
    七、显示字符串中的字符从界面上输入一个字符串(C风格),把字符串中的每个字符显示出来,如果输入的是"abc",要求:1)正序显示:abc2)逆序显示:cba求字符串的长度可以利用上一题的成果,也可以直接用strlen()函数,关注性能的细节。示例:#include<iostream>usingnamespacestd;//......
  • Attention is all you need 论文阅读笔记
    AttentionisallyouneedTransformeronlybasedonattentionmechanisms,dispensingCNN,RNNIntroductionandBackgroundRNN必须将前一步生成的h......
  • 【笔记】网络流量异常检测概览
    异常流量监控和拒绝服务方法研究对于保障路由器通信安全至关重要。传统的网络安全技术(例如系统入侵检测、防病毒软件、防火墙之类的)对于DDos类的攻击无法很好地防范。网络层安全研究的是什么?跟之前的声光电磁层不同,声光电磁实质上是物理层信息传输的介质,而网络层安全主要关注的......
  • 最优化理论与自动驾驶(十一):基于iLQR的自动驾驶轨迹跟踪算法(c++和python版本)
    最优化理论与自动驾驶(四):iLQR原理、公式及代码演示之前的章节我们介绍过,iLQR(迭代线性二次调节器)是一种用于求解非线性系统最优控制最优控制最优控制和规划问题的算法。本章节介绍采用iLQR算法对设定的自动驾驶轨迹进行跟踪,与第十章节纯跟踪算法采用同样跟踪轨迹,同时,我们仅对控......
  • 安全帽佩戴识别算法
    安全帽佩戴识别算法采用SuiJi-AI人工智能深度学习技术+计算机智能视觉识别算法,且通过规模化的安全帽数据识别训练。安全帽佩戴识别算法借助现场已有的监控摄像头对监控画面中人员着装行为进行实时分析识别。假如检测人员不戴安全帽,SuiJiAi将立即记录和警报,并可将纪录数据推送到后......