准备蓝桥杯的宝贝们看过来,二分法一网打尽(基础篇)
创始人
2024-04-13 17:56:30
0

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

二分基础题链接

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

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

第一种

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

class Solution {
public:int search(vector& 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]

为什么说它基础,应为你不用考虑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& nums, int target) {int left=0;int right=nums.size();//注意!!!while(lefttarget)right=mid; //注意!!!        else if(nums[mid]

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

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& nums, int target) {int num=nums.size();for(int i=0;i

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

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

35. 搜索插入位置

69. x 的平方根 

367. 有效的完全平方数

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

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...