二分查找模版
对于一个递增序列我们要找大于等于target的数,返回结果的下标时
比如 序列 5 7 7 8 8 10
初始化左右指针l=0 r=n-1 猜测区间 [l,r] 闭区间,mid=(l+r)/2 防溢出就写成 mid=l+(r-l)/2
如果有nums[mid]<target 那么[l,mid]这个区间的数就都小于target 更新 l=mid+1;
否则就是nums[mid]>=target [mid,r]这个区间的数都大于等于target 更新r=mid-1;
终止时返回l,拿这个案例序列走一遍找8,最后l和r都指向下标3处的8,此时,l=3,r=3,mid=3 然后更新r=mid-1=2 l>r 跳出循环 结果就是l或 r+1 返回3,再比如找3,会发现r不断更新r=1,-1 跳出循环
返回l=0, 当找大于10的数时,l不断更新r不动了最后跳出循环就是返回数组的长度
int lower_bound1(vector<int>&nums,int target)
{int l=0,r=nums.size()-1; //闭区间[l,r]while(l<=r){int mid=l+(r-l)/2; //防溢出if(nums[mid]<target)l=mid+1;else r=mid-1;}return l; //最后跳出循环 l>r 结果是r+1 或者l 因为 此时r+1=l
}
int lower_bound2(vector<int>&nums,int target)
{int l=0,r=nums.size(); // 左闭右开 [l,r)while(l<r){int mid=l+(r-l)/2;if(nums[mid]<target)l=mid+1;elseright=mid;}return l //或者return r
}
int lower_bound3(vector<int>&nums,int target)
{int l=-1,r=nums.size() ; // 开区间 (l,r)while(l+1<r){int mid=l+(r-l)/2;if(nums[mid]<target)l=mid;elser=mid;}return r;
}
上述我们讨论了 在序列中找 >=target 的计算方法 ,对于>target <target <=target 这里都可以从第一种情况来转换:
我们要找大于target的数,就可以使用上面的lower_bound 找 >=target+1
我们要找小于target的数 就可以使用上面的lower_bound招到>=target 的数左边的那个数,也就是返回的下标再减一
我们找小于等于target的数 就可以使用前面大于target返回的结果减一
相关文章:
二分查找模版
对于一个递增序列我们要找大于等于target的数,返回结果的下标时 比如 序列 5 7 7 8 8 10 初始化左右指针l0 rn-1 猜测区间 [l,r] 闭区间,mid(lr)/2 防溢出就写成 midl(r-l)/2 如果有nums[mid]<target 那么[l,mid]这个区间的数就都小于target 更新 lmi…...
idea清空缓存类
解决办法 网上有很多是让你去清空什么maven依赖,但假如这个项目是你不可以大刀阔斧的话 可以清空idea缓存 选择 Invalidate 开头的 然后全选 运行重启idea OK...
PAT(Basic Level) Practice(中文) 1015德才论
前言 ※ PTA是 程序设计类实验辅助教学平台 ,里边包含一些编程题目集以供练习。 这道题用java解,我试了三种解法,不断优化,但始终是三个测试点通过、三个测试点超时。我把我的代码放在这里,做个参考吧。 1015 德才…...
接口自动化测试的概述及流程梳理~
接下来开始学习接口自动化测试。 因为之前从来没接触过,所以先了解一些基础知识。 1.接口测试的概述 2.接口自动化测试流程。 接口测试概述 接口,又叫API(Application Programming Interface,应用程序编程接口)&a…...
竞赛 机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 -python
文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 🔥 优质竞赛项目系列&#x…...
虚拟货币(也称为加密货币或数字货币)的运作
虚拟币发展史 虚拟币的发展史可以追溯到20世纪末和21世纪初,以下是虚拟币的重要发展节点: 1998年:比特币白皮书的发布 比特币的概念最早由中本聪(Satoshi Nakamoto)在1998年提出,随后在2008年发布了一份名…...
N. Number Reduction
Problem - 1765N - Codeforces 发现如果是无前导0最小数那么在保证删除k个数时第1位是最小的,第二位一定是相对最小的,且答案第一位和第二位在原位置的间隔是小于等于还可以删除的位数的。 因此,对于原数字长度位n,要删除k&#…...
Java集合面试题
一、Java集合面试题 1.LinkedHashMap底层原理? HashMap是无序的,迭代HashMap所得到元素的顺序并不是它们最初放到HashMap的顺序,即不能保持它们的插入顺序。 LinkedHashMap继承于HashMap,是HashMap和LinkedList的融合体&#x…...
Python 编程基础 | 第三章-数据类型 | 3.5、列表
一、列表 1、创建列表 序列是Python中最基本的数据结构,Python有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python已经内置确定序列…...
Spring Cloud Zuul 基本原理
Spring Cloud Zuul 底层是基于Servlet实现的,核心是通过一系列的ZuulFilter来完成请求的转发。 1、核心组件注册 1.1. EnableZuulProxy注解 启用Zuul作为微服务网关,需要在Application应用类加上EnableZuulProxy注解,而该注解核心是利用Im…...
QT实现TCP服务器客户端的实现
ser: widget.cpp: #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//实例化一个服务器server new QTcpServer(this);// 此时…...
行为型设计模式——责任链模式
摘要 责任链模式(Chain of responsibility pattern): 通过责任链模式, 你可以为某个请求创建一个对象链. 每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象。 一、责任链模式意图 职责链模式(Chain Of Responsibility) 是一种行为设…...
window安装压缩版postgresql
环境: window 11 专业版postgresql-16.0-1-windows-x64-binaries.zip 一、下载 1.1 从官网下载 https://www.postgresql.org/download/windows/ 1.2 从百度网盘下载 链接:https://pan.baidu.com/s/1fmQbgWSzX4hN07Lgdzfz0g?pwddzyy 提取码&#…...
数组(数据结构)
优质博文:IT-BLOG-CN 一、简介 数组Array是一种线性表数据结构,它用一组连续的内存空间,存储一组具有相同类型的数据。 数组因具有连续的内存空间的特点,数据拥有非常高效率的“随机访问”,时间复杂度为O(1)。但因要保…...
C/C++ 二分查找面试算法题
1.二分查找(有序数组) https://blog.csdn.net/qq_63918780/article/details/122527681 1 #include <stdio.h>2 #include <string.h>3 4 int func(int *a,int j,int x)5 {6 int len j - 1,i 0,min;7 while(i<len)8 {9 …...
Linux基本指令(上)——“Linux”
各位CSDN的uu们好呀,今天,小雅兰的内容是Linux啦!!!主要是Linux的一些基本指令和Linux相关的基本概念(系统层面),下面,让我们进入Linux的世界吧!!…...
XSS详解
XSS一些学习记录 XXS短标签、属性、事件、方法短标签属性事件函数弹窗函数一些对于绕过有用的函数一些函数使用payload收集 浏览器编码问题XML实体编码URL编码JS编码混合编码 一些绕过方法利用constructor原型污染链构造弹框空格绕过圆括号过滤绕过其他的一些绕过 参考 XXS短标…...
【图论】判环问题
(未更新完、做到相关题再更新相关部分 文章目录 无向图判断有无环并输出环上点 无向图判断有无环并输出环上点 例题:H. Mad City 利用变种拓扑排序,先把度为1的点存入队中,每次取出队头,遍历邻接点,再将该…...
将3D MAX设计模型导入NX1988
将3D MAX设计模型导入NX1988 概述导入流程导出喜欢的模型对模型进行修改模型贴图 概述 一般家装设计都不会用NX之类的产品设计软件,也没有通用的文件格式可以互相转换,本文的目的是将从网上下载的一些设计较好的3D MAX模型导入到NX软件中借用࿰…...
操作系统原理实验三:页面调度算法程序
实验三:页面调度算法程序 课程名称:操作系统原理 项目名称:页面调度算法程序 实验(实训)类型:验证性实验 实验(实训)课时:2 [目的和要求] 目的: 加深对请…...
Nexus Machine架构:边缘计算中稀疏矩阵处理的革新
1. 项目概述:Nexus Machine架构的创新价值在边缘计算和AI推理领域,稀疏矩阵计算(如SpMSpM、SpMV)和图形处理(如BFS、PageRank)等不规则工作负载正面临严峻的性能瓶颈。传统CGRA(Coarse-Grained …...
手机号逆向查询QQ号:3分钟快速掌握Python查询技巧
手机号逆向查询QQ号:3分钟快速掌握Python查询技巧 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾需要快速验证手机号对应的QQ账号?手机号查QQ号工具是一个简单高效的Python开源项目,让你…...
DAB的TPS控制闭环到底怎么调?从开环公式到稳定PI调节的实战心得
DAB的TPS控制闭环调试实战:从开环公式到稳定PI调节 调试双有源桥(DAB)变换器的三重移相(TPS)控制闭环,就像在高速公路上同时操控三辆并排行驶的赛车——任何一个小失误都可能导致系统失控。本文将带您深入理…...
Gemini应用商店曝光量暴跌?3步诊断+5个隐藏算法漏洞修复指南
更多请点击: https://intelliparadigm.com 第一章:Gemini应用商店曝光量暴跌?3步诊断5个隐藏算法漏洞修复指南 近期大量开发者反馈 Gemini 应用商店自然曝光量断崖式下跌,部分应用 7 日内曝光下降超 68%,但后台数据未…...
AI建站案例:一家外贸工厂如何用“AI+系统”拿下海外订单
AI建站案例:一家外贸工厂如何用“AI系统”拿下海外订单【引言:别让网站成为“电子名片”】我们看过太多外贸工厂的网站:花了几千块,做得金碧辉煌,但一年下来询盘屈指可数。问题不在产品,而在“数字化基建”…...
Cursor Pro功能解锁:3步实现免费无限制使用AI编辑器完整指南
Cursor Pro功能解锁:3步实现免费无限制使用AI编辑器完整指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached yo…...
利用Taotoken模型广场为内容生成应用挑选合适模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken模型广场为内容生成应用挑选合适模型 对于开发内容生成类应用的团队而言,选择合适的模型是项目成功的关键…...
在Google Cloud上构建OpenAI兼容API网关:无缝对接Vertex AI模型
1. 项目概述:在Google Cloud上搭建你自己的OpenAI兼容API网关 如果你正在寻找一种方法,能够让你手头那些原本为OpenAI ChatGPT设计的应用,无缝对接上Google Cloud Vertex AI的强大模型,比如Gemini Pro、PaLM 2或者Codeyÿ…...
Docker 学习笔记:镜像分发、容器运行与资源限制
Docker 学习笔记:镜像分发、容器运行与资源限制本笔记续接上一部分,涵盖镜像命名与分发、容器的核心操作、底层技术(cgroup/namespace)以及 CPU/内存资源限制。所有案例代码均经验证,直接可用。8. 镜像命名与分发最佳实…...
基于OpenClaw的轻量级AI内容工厂:多智能体协作与自动化创作实践
1. 项目概述:一个轻量级AI内容创作工厂如果你正在寻找一个能快速上手、开箱即用的AI内容创作解决方案,那么aiclublight这个项目可能会让你眼前一亮。它本质上是一个基于OpenClaw框架构建的“AI内容工厂”的轻量版,将复杂的多智能体协作系统&a…...
