准备蓝桥杯的宝贝们看过来,二分法一网打尽(基础篇)

news2025/2/26 9:49:02

今天给大家介绍一下简单的二分法(刷题第一步!)

二分基础题链接

二分查找有个很明显的特点就是有序,这个特点同学如果在题中看到就要格外注意

一定要看完,基本的三种解法,后面还有真题链接哦!!

第一种

就是最最基础的左闭右闭的区间

class Solution {
public:
    int search(vector<int>& nums, int target) {//vector和python里的list有异曲同工之处
        int left=0;
        int right=nums.size()-1;
//这里也可以用right=sizeof(nums)/sizeof(nums[0]);
        while(left<=right)//注意!!!
        {
            int mid=(right-left)/2+left;
            if(nums[mid]>target)
            {
                right=mid-1;//注意!!!
            }
            else if(nums[mid]<target)
                left=mid+1;//注意!!!
            else
                return mid;
        }
        return -1;
    }
};

为什么说它基础,应为你不用考虑right是否合法啊,这样要注意的有如下两点

1.循环判断时:while(left<=right),这里就有同学问了,why "<=" ? 哈哈哈,因为是此时是[left, right],所以 "left==right"这时候是有意义的。

2.当判断完满足条件 nums[mid] < target 后,要缩小区间范围了,right此时可以等于 mid-1,因为当满足nums[mid] < target这个条件时,nums[mid] != target这个已经确定,所以right=mid-1;同理left也是,只不过 left=mid+1,大同小异。

如果大家还有疑惑,我就偷个图让大家看看,哈哈哈

 第二种

就是和第一种有些许不同的左闭右开区间,可别小看这一个点,把上面两个全改变了!!

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

 这个和上面截然不同的两点

1.循环判断条件:while (left < right),哈哈哈,这里就有同学恍然大悟,应为现在"left==right",根本就不合法。

2.判断条件,if (nums[mid] > target) 时,right = mid,因为是开区间,这里如果 right=mid+1,就相当于漏掉了nums[mid+1],原因也是区间右边是开区间,所以现在 right=mid时已经表示了“ target ! = num[mid]”,这里可不能出错哦!

3.多了个对小白来说,还是要说说,这时 right由于是开区间,所以最开始时,right=nums.size()

如果有小伙伴还不理解,呢我就只能勉为其难,再偷个图,让大家看看了

 介绍完以上两种,呢就再说一个最简单的吧!

第三种

暴力解法:基于二分查找的有序(可能最快,真的!!!)

由于已经有序,这时从头遍历如果遇到" target==nums[i] ",就" return i ",不就万事大吉了,时间复杂度也是O(n),空间也是O(1) ,如果碰到简单的二分查找完全就不需要搬框架,直接暴力就行

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int num=nums.size();
        for(int i=0;i<num;i++)
        {
            if(nums[i]==target)
                return i;
        }
        return -1;
    }
};

看完模板就试试上手做点题吧!

34. 在排序数组中查找元素的第一个和最后一个位置

35. 搜索插入位置

69. x 的平方根 

367. 有效的完全平方数

大家可以关注我,这两天,会把这四个题尽量用这三种方法更新至博客哦!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/39464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

异步请求-AJAX

什么是同步交互 首先用户向HTTP服务器提交一个处理请求。接着服务器端接收到请求后&#xff0c;按照预先编写好的程序中的业务逻辑进行处理&#xff0c;比如和数据库服务器进行数据信息交换。最后&#xff0c;服务器对请求进行响应&#xff0c;将结果返回给客户端&#xff0c;返…

TCP三次握手与四次挥手

TCP三次握手的建立与四次挥手的过程 TCP协议 TCP 用于处理实时通信TCP是基于端口&#xff0c;面向连接的传输层协议TCP的握手和挥手本质上都是四次&#xff0c;只不过握手合并成三次。因为主机之间要想通信需要先建立双向数据通道TCP的主要特点是传输稳定性高&#xff0c;但是…

[自建题库]c认证初级

UTF-8的编码实现方式有几种? UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4 二进制数1111.1111转换成十进制数是多少&#xff1f; 如果二进制数字“1000111______”采取偶校验&#xff0c;那么下划线的校验位处应该填什么&#xff1f; 0 在MPEG-4中&#xff0c;第九部分定义了IP网络传…

JS高级-语言特性(持续更新一)

JS高级-语言特性 JS高级-语言特性 一、JS面向对象编程 1.1面向对象介绍 1.2面向对象编程 1.3创建对象 二、构造函数 2.1构造函数 2.2构造函数存在的问题 三、原型 3.1构造函数的prototype属性 3.2构造函数、实例、原型三者之间的关系 3.3原型对象的获取及修改 3.4原…

[附源码]Python计算机毕业设计高校电子作业提交与批改系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

CTFHub | Refer注入

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习&#xff0c;实训平台。提供优质的赛事及学习服务&#xff0c;拥有完善的题目环境及配套 writeup &#xff0c;降低 CTF 学习入门门槛&#xff0c;快速帮助选手成长&#xff0c;跟随主流比赛潮流。 0x01 题目描述…

[C#] GDI+ 之鼠标交互:原理、示例、一步步深入、性能优化

一、前言 “GDI”与“鼠标交互”&#xff0c;乍一听好像不可能&#xff0c;也无从下手&#xff0c;但是实现原理比想象中要简单很多。 基于“GDI”的“交互”&#xff0c;应用场景也很多&#xff0c;比如&#xff1a;流程图、数据图表、思维导图等等。 本篇文章就通过多个示例…

美新科技IPO过会:9个月营收6亿 林东融三兄弟为实控人

雷递网 雷建平 11月26日美新科技股份有限公司&#xff08;简称&#xff1a;“美新科技”&#xff09;日前IPO过会&#xff0c;准备在深交所创业板上市。美新科技计划募资9.58亿元&#xff0c;其中&#xff0c;5.1亿元用于美新科技新型环保塑木型材产业化项目&#xff08;一期&a…

基于HTML+CSS+JavaScript制作学生网页——外卖服务平台10页带js 带购物车

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | HTML期末大学生网页设计作业 HTML&#xff1a;结构 CSS&#xff1a;样式 在操作方面上运用了html5和css3&#xff0c; 采用了divcss结构、表单、超链…

[附源码]SSM计算机毕业设计拾穗在线培训考试系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

JS逆向 Frida - 夜神模拟器安装配置 基本使用

JS逆向 Frida - 夜神模拟器安装配置 基本使用 文章目录JS逆向 Frida - 夜神模拟器安装配置 基本使用前言一、Frida简单介绍&#xff1f;1.Frida是什么2.Frida原理(建议了解一下&#xff0c;否则后续的安装会有些懵懂)二、Frida下载1.pip安装frida模块2.查看本地的frida版本&…

大数据项目之电商数仓DataX、DataX简介、DataX支持的数据源、DataX架构原理、DataX部署

文章目录1. DataX简介1.1 DataX概述1.2 DataX支持的数据源2. DataX架构原理2.1 DataX设计理念2.2 DataX框架设计2.3 DataX运行流程2.4 DataX调度决策思路2.5 DataX与Sqoop对比3. DataX部署3.1 下载DataX安装包并上传到hadoop102的/opt/software3.2 解压datax.tar.gz到/opt/modu…

一、微服务入门

文章目录一、微服务大概认识二、单体架构架构和分布式架构三、微服务架构特征四、微服务技术对比五、SpringCloud 与 SpringBoot版本兼容关系如下&#xff1a;一、微服务大概认识 二、单体架构架构和分布式架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&…

一文弄懂 Diffusion Model

什么是 Diffusion Model 一、前向 Diffusion 过程 Diffusion Model 首先定义了一个前向扩散过程&#xff0c;总共包含T个时间步&#xff0c;如下图所示&#xff1a; 最左边的蓝色圆圈 x0 表示真实自然图像&#xff0c;对应下方的狗子图片。 最右边的蓝色圆圈 xT 则表示纯高斯…

Tomcat安装及配置和常见的问题(2022最新详解、图文教程)

Tomcat的配置安装1. 关于WEB服务器软件2. 配置Tomcat的服务器第一步&#xff1a;配置Java的运行环境第二步&#xff1a;Tomcat的安装第三步&#xff1a;启动Tomcat3. 问题一&#xff1a;解决Tomcat服务器在DOS命令窗口中的乱码问题&#xff08;控制台乱码&#xff09;4. 测试To…

问题盘点|使用 Prometheus 监控 Kafka,我们该关注哪些指标

Kafka 作为当前广泛使用的中间件产品&#xff0c;承担了重要/核心业务数据流转&#xff0c;其稳定运行关乎整个业务系统可用性。本文旨在分享阿里云 Prometheus 在阿里云 Kafka 和自建 Kafka 的监控实践。01Kafka 简介Aliware01Kafka 是什么&#xff1f;Kafka 是分布式、高吞吐…

算法选修(J.琴和可莉)(为选修画上句号)

可莉又去池塘炸鱼啦&#xff01;琴团长决定亲自捉拿可莉将其关禁闭。琴团长不断地追&#xff0c;可莉不断地跑。 琴团长和可莉的行动路线可以看做是一个有n个节点的无根树&#xff0c;初始时琴团长在A点&#xff0c;可莉在B点&#xff0c;她们互相知道对方的位置。 琴团长想尽…

P8869 [传智杯 #5 初赛] A-莲子的软件工程学

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);long a sc.nextLong();long b sc.nextLong();System.out.println(Math.abs(a)*(b>0?1:-1));}} 题目背景 在宇宙射线的轰击下&#xff0c;莲子…

Day13--搜索建议-自动获取焦点与防抖处理

1.定义如下的 UI 结构&#xff1a; 我的操作&#xff1a; 第一次尝试&#xff1a;【出现轮廓】 官方文档&#xff1a; 1》在search.vue中&#xff1a; 效果图&#xff1a;【还是和博主的搜索框有区别的】 第二次尝试&#xff1a;【加上圆角】 官方文档&#xff1a; 第三次尝试…

58、ElasticSearch DSL Bucket聚合

1、聚合的分类 2、DSL实现Bucket聚合 # 集合, 1、bucket terms GET /hotel/_search { "size": 0, "aggs": { "brandAgg": { "terms": { "field": "brand", "size": 20 …