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

东莞网站制作功能微信小程序怎么推广

东莞网站制作功能,微信小程序怎么推广,企业培训师,网站 欣赏简单思路#xff1a; 当我们要从一个序列中查找一个元素的时候#xff0c;最快想到的方法就是顺序查找法#xff08;即#xff1a;从前到后依次查找#xff09;。但这种方法过于无脑#xff0c;就是暴力的把每个元素都排查一遍。元素个数少的时候还行#xff0c;一旦元… 简单思路 当我们要从一个序列中查找一个元素的时候最快想到的方法就是顺序查找法即从前到后依次查找。但这种方法过于无脑就是暴力的把每个元素都排查一遍。元素个数少的时候还行一旦元素个数多起来效率是非常低下所以在实际中这种查找的方法是被摒弃的。 当题目或者实际对时间复杂度有着很高的要求的时候这种暴力解法就显得很乏力 这里就不得不介绍一种简单且效率较高的查找方法了二分查找法又称折半查找法。但该方法是建立在有序的前提下的基本思路就是 利用两个指针left和right不断取中点来不断把区间减小从而找到我们的答案 二分查找法的优势 二分查找法的时间复杂度OlogN 暴力解法的时间复杂度ON 如何直观来体现二分查找法时间复杂度的优势呢 可以看出 二分查找 在查找数字 37 时只需3次而 顺序查找 在查找37时需要12次。 二分查找的条件 很多算法书都是写的具有有序性其实更准确的是具有二段性 也就是具有可以把数组分为两端的性质 二分查找有两个限制条件 查找的数量只能是一个不能是多个查找的对象在逻辑上必须是有序的这个不是必要条件更深层次是就有二段性 朴素二分查找 1.left0right数组最后一个位置的下标 2.取中点midright-left/2 二分法的思想很简单因为整个数组是有序的数组默认是递增的。 首先选择数组中间的数字和需要查找的目标值比较 如果相等最好就可以直接返回答案了 如果不相等 如果中间的数字大于目标值则中间数字向右的所有数字都大于目标值全部排除 如果中间的数字小于目标值则中间数字向左的所有数字都小于目标值全部排除 704. 二分查找 以此题为例 class Solution { public:int search(vectorint nums, int target) {int left0;int rightnums.size()-1;while(leftright){int midleft(right-left)/2;if(nums[mid]target) return mid;if(nums[mid]target) rightmid-1;if(nums[mid]target) leftmid1;}return -1;} };朴素二分查找的模版 while(leftright){int midleft(right-left)/2;if(nums[mid]target) return mid;if(nums[mid]target) ...;if(nums[mid]target) ...;}return ...;二分查找左右端点 我们通过一个例子 34. 在排序数组中查找元素的第一个和最后一个位置 本题我们利用二分来解决左右端点的问题首先left和right肯定有的 我们通过一个示例来了解本题:[1,2,3,3,3,4,5] 查找左端点我们这里用t来代替target这样比较好叙述 二分的思路操作我们可以将上述示例分为两个部分因为我们现在查找左端点因此我可以将示例分为【[1,2],[3,3,3,4,5]】 当xt时,处于【1,2】这个区间leftmid1当xt时处于【3,3,3,4,5】这个区间rightmid这里不能等于mid-1因为如果mid0right-1会越界 细节处理 循环条件 leftright √leftright × 我们选择那种呢我们来讨论一下 有结果全大于tt1right一直向左走最后right为left结束如果是leftright会死循环全小于tt2left一直向右走最后left在right右边结束 以此我们只能选择第一种不能选择第二种 求中间的操作 left(right-left)/2 ×left(right-left1)/2 √ 我们考虑一下极端情况就可以知道了当只剩下两个元素的时候 第一种没有问题第二种mid02/21当进行left1操作的时候会发生越界 查找右端点 二分的思路操作我们可以将上述示例分为两个部分因为我们现在查找左端点因此我可以将示例分为【[1,2,3,3,3].[4,5]】 当xt时,处于【1,2,3,3,3】这个区间leftmid当xt时处于【4,5】这个区间rightmid-1 细节处理 循环条件 leftright √leftright × 还是选择leftright 求中间的操作 left(right-left)/2 √left(right-left1)/2 × 我们考虑一下极端情况就可以知道了当只剩下两个元素的时候 第一种当mid01/20时rightmid-1越界第二种没有问题 class Solution { public:vectorint searchRange(vectorint nums, int target) {//特殊情况处理一下if(nums.size()0)return {-1,-1};int left0,rightnums.size()-1;vectorint ret;//查找左端点while(leftright){int midleft(right-left)/2;if(nums[mid]target)leftmid1;if(nums[mid]target)rightmid;}//当leftright时就是结果if(nums[left]!target)return {-1,-1};else ret.push_back(left);//查找右端点left0,rightnums.size()-1;while(leftright){int midleft(right-left1)/2;if(nums[mid]target)leftmid;if(nums[mid]target)rightmid-1;}if(nums[right]!target)return {-1,-1};else ret.push_back(right);return ret;} };查找区间左右端点的模版 模版这里主要是取中间这里不太一样左端点时不用1右端点1记忆当下面出现-1上面就1 至于left和right可以现场推导
http://www.w-s-a.com/news/27513/

相关文章:

  • 建网站需要什么语言如何做二维码跳转到网站
  • 天津建设交培训中心网站做网站起名字
  • 黑河北京网站建设湛江市住房和城乡建设局网站
  • 网站建设拾金手指下拉十九企业查询官网
  • 邢台提供网站建设公司哪家好五合一建站
  • 京东网站设计代码驻马店做网站的公司
  • 织梦网站模板使用教程福州网站建设工作
  • 做网站要准备的需求asp 网站后台
  • 滨州网站开发公司中立建设集团有限公司网站
  • 泰安建设厅网站做网站为什么要建站点
  • 有什么好的手机推荐网站创建网站需要哪些工作
  • 网站能给企业带来什么上饶市网站建设公司
  • 学做网站卖东西去哪学南宁网站建设gxjzdrj
  • 欧美网站建设案例网站开发 男生
  • 网站正在开发中做电子元器件的网站
  • 做网站搭建的公司中国建设银行官网站u盾证书
  • 大连哪里有手机自适应网站建设公司网站介绍模板 html
  • 佛山模板建站宣传片制作公司电话
  • 文字网站居中能自己做网站接业务吗
  • 免备案自助建站网站广州珈瑶公司是哪一年注册的
  • ps做网站界面wordpress为图片添加圆角
  • seo优化推广业务员招聘seo顾问服务福建
  • 成都私人网站建设seo网站推广方案策划书
  • 广州网站建设工作室wordpress log
  • 网站后台添加wordpress h1标签优化
  • 自己做网站都需要什么高密 网站建设
  • 网站语言选择郑州本地做团购的网站
  • dw网页设计模板图片谷歌wordpress优化
  • 网站seo优化要怎么做礼品公司怎么做网站
  • 做网页网站需要钱吗提供常州微信网站建设