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

用rp怎么做网站功能按钮阿里云网站建设教程视频

用rp怎么做网站功能按钮,阿里云网站建设教程视频,女孩子做电商运营是不是压力很大,拼多多网站建设框架图目录 1.概论 2.朴素的二分算法 3.求左端点的二分算法和求右端点的二分算法 4.总结 1.概论 要想了解什么是二分算法,我们就要知道什么是二分算法,二分算法是根据数组的规律,每次查找的数据原来的效率可能要O(n),而我…

目录

1.概论

2.朴素的二分算法

3.求左端点的二分算法和求右端点的二分算法

4.总结


1.概论

要想了解什么是二分算法,我们就要知道什么是二分算法,二分算法是根据数组的规律,每次查找的数据原来的效率可能要O(n),而我们可以把它优化为logN,这会大大提高我们的算法效率,总的来说我们的二分算法就是通过利用数组的规律来优化效率的一种算法下面我们把二分算法进行分类:1.朴素的二分算法。2.查找左端点的二分算法。3.查找右端点的二分算法。

下面我们遵循从简到难得规律来进行讲解,帮助大家和我一起来认识二分算法。

2.朴素的二分算法

我们空说的话比较抽象,我们直接借助题目来认识二分算法。

力扣704二分查找正好合适。

看到题目,让我们在数组中让我们去找一个目标值,我们很容易想到遍历数组,找到targe进行返回,但是它遍历数组时间复杂度较高,我们发现我们没有利用数组有序的规律,所以我们进行算法优化,我们每次求中间的值,让它跟target进行比较,等于返回找到,小的话让left=mid+1,大的话让right=mid-1.我们观察这个算法我们发现我们每次都会干掉一半的值,时间复杂度会优化到LOGN,这时候有同学就要问了:主播主播,为什么我们每次找中点呢?不能每次找三分之一点,四分之一点,五分之一点吗?当然可以,只是经过数学大牛的计算证明,发现每次求中点的效率最高,所以我们这里只需要记住我们一般每次干掉一半即可。

下面给出我们的代码实现:

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

3.求左端点的二分算法和求右端点的二分算法

下面我们再来一道题目,来讲解我们的二分算法的进阶。

这道题我们发现它让我们求一个范围,所以我们需要求出左右的范围,这里我们就要进行分析了,怎么样求呢?

经过这道题目的分析,我们也是很容易想到的暴力解法就是遍历数组进行求解,时间复杂度同样达到了O(n),那么我们接下来进行算法优化,抽象出来数组,主播的字比较难看,凑合着看吧。。。

我们发现我们求出最左节点我们就是要求大于等于的最左节点,注意我们只能求它们边界的节点,这决定了我们必须得这样划分数组。

举个反例:

我们这里只能求小于等于的最右点解,求不出小于等于中小框范围的最左节点,这是我们算法导致的。硬求的话会导致效率降低,所以我们这样划分数组。不信我们进行求,就知道为什么不行了,

我们是这样求的,mid>t,right=mid-1;mid<=t,left=mid;我们发现right进入小框的范围后,变的就只有left了,我们left不断的等于mid,会不断向右靠,讲到这里各位靓仔应该明白了吧。

所以我们进行这样的范围划分是右意义的。

还有要注意的细节这里我们当left==right之后我们结束循环,因为如果有符合范围的值,我们一般是left和right移动到同一个为止上。

第二个要注意的点就是当出现偶数的特殊情况是我们怎么解决:

我们这里对mid的处理就不同了,如果mid=left+(right-left),它是指向偶数数组中间的靠左边,这里我们发现求最左节点靠右是正常的。但是相反当mid=left+(right-left+1)/2,mid指向right,就会出现问题,因为我们mid<target,left=mid+1;left向右靠,right=mid,right向左靠,right一直等于mid,陷入死循环,所以程序崩掉了。

我们总的来说我们根据划分来确定mid怎么搞是>t,<=t的组合,还是>=t,<t的组合,

这样的情况下我们就是前者的组合,

这样的组合我们就是后者的组合

,至于求最右端点的解法,我们对求最左节点的方法反过来就可了。

下面给出本题代码题解供大家理解:

    vector<int> searchRange(vector<int>& nums, int target) {int left=0;vector<int>num;int right=nums.size()-1;while(left<right){int mid=left+(right-left)/2;if(nums[mid]<target){left=mid+1;}else{right=mid;}}if(nums.size()!=0&&nums[left]==target){num.push_back(left);}else{num.push_back(-1);}right=nums.size()-1;while(left<right){int mid=left+(right-left+1)/2;if(nums[mid]>target){right=mid-1;}else{left=mid;}}if(nums.size()!=0&&nums[left]==target){num.push_back(left);}else{num.push_back(-1);}return num;}

4.总结

要想理解二分算法,需要自己画图去理解试错,总的来说注意一下细节就可以。希望大家都可以学会这种效率算法。


文章转载自:

http://I77dXmh1.Lmjkn.cn
http://2VqWZyiZ.Lmjkn.cn
http://qbazFplZ.Lmjkn.cn
http://55FKIBYT.Lmjkn.cn
http://AedqGXLM.Lmjkn.cn
http://BIyS292p.Lmjkn.cn
http://f1JGUkWi.Lmjkn.cn
http://tMD29VGB.Lmjkn.cn
http://3JvHPsZb.Lmjkn.cn
http://xaxgcgOJ.Lmjkn.cn
http://ZL8gVMuB.Lmjkn.cn
http://xsMg16vW.Lmjkn.cn
http://oejXCdjk.Lmjkn.cn
http://p4sNKFNd.Lmjkn.cn
http://GqESgEhU.Lmjkn.cn
http://OqcTJROj.Lmjkn.cn
http://8yutZFIl.Lmjkn.cn
http://oKfKKdvy.Lmjkn.cn
http://2vGYKNAJ.Lmjkn.cn
http://ycwrUj3f.Lmjkn.cn
http://7vpdB3Va.Lmjkn.cn
http://M2lnTt8T.Lmjkn.cn
http://UqybA0H5.Lmjkn.cn
http://UesLH27N.Lmjkn.cn
http://Pw9zLJvV.Lmjkn.cn
http://lR4cX4rb.Lmjkn.cn
http://2dtKjJ2K.Lmjkn.cn
http://9TyRMBqV.Lmjkn.cn
http://ReEsQMsb.Lmjkn.cn
http://j2p53Gz1.Lmjkn.cn
http://www.dtcms.com/wzjs/715661.html

相关文章:

  • 四川住房建设部网站利用网站做淘宝客
  • 学习网站开发流程wordpress仿站实战
  • 购买网站建站wordpress 增加 导航栏
  • 网站公司名称大全天使投资平台官网
  • 公司手机网站模板学做古典家具网站
  • 云主机搭建网站网站制作问题 图片版权
  • 成都自助建站软件长春网络优化最好的公司
  • 佛山网站建设永网上海平台公司
  • 通信工程企业网站建设杭州网站建设哪个好
  • 永久免费wap建站百度热议怎么上首页
  • 上海沙龙网站建设wordpress自定义帖子链接
  • 如何建设一个国外网站韩语网站建设
  • 百度联盟怎么做自己的网站织梦网站英文版怎么做
  • 给别人做非法网站能判多久网站建设博敏
  • 可以自己做歌曲的网站为什么网站 关键词策划
  • 唐山企业网站建设美食类网站开发说明书
  • 网站的步骤做网页需要什么
  • 十大免费建站程序wordpress李家沱网站建设
  • 合肥市高端网站建设自建网站过程
  • 建网站的系统网站设计思路方案
  • 做网站搜索排名上海龙华医院的网站建设
  • 学校专业群建设专题网站海口网站建设策划
  • 成都比较好的网站建设公司vr全景网站开发
  • 河南网站建设公司排名南山做网站行业
  • 做企业网站大概多少钱石家庄建站源码
  • 北京企业网站制作哪家好查看网站流量
  • 做理财网站wordpress 除了
  • 成都隆昌网站建设html网页模板下载html模板免费
  • 南通网站建设计划书搜索引擎大全排名
  • 旅游营销型网站建设wordpress 微博文章