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

关于网站建设的网站有哪些企业网站建站 费用

关于网站建设的网站有哪些,企业网站建站 费用,上海 网站设计公司,游戏网站cms二分查找,也称为折半查找,是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。我们应该如何用在具体问题中呢? 题目链接(力扣(LeetCode&am…

        二分查找,也称为折半查找,是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。我们应该如何用在具体问题中呢?

题目链接(力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台)

 

可以直接通过遍历一次数组就得到对应值下标了,时间复杂度为 \Theta (n)。但是我们可以通过划分区间的方式获得更优秀的时间复杂度(二分查找),通过取中值的方式可以把一个数组划分出两个区间,通过中值可以判断出target在哪一个区间,循环迭代即可。按照这种方式我们可以一次舍去一整片区间,相比于遍历数组一次舍去一个数值,得到的时间复杂度为 \Theta (logn)
具体细节见代码:
int search(vector<int>& nums, int target) {int left = 0, right = nums.size()-1;while(left <= right){int mid = (left + right)/2;if(nums[mid] > target)  //要查找的目标值在左区间right = mid - 1;else if(nums[mid] < target)  //要查找的目标值在右区间left = mid + 1;elsereturn mid;}return -1;
}

题目链接(力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 )

 

我们依旧可以通过一次遍历完成,定义两个指针分别记住target值的第一次出现的下标,第二个指针记住target值最后一次出现的下标即可,时间复杂度为 \Theta (n)。题目要求时间复杂度为 \Theta (logn),我们采用上面这种二分查找算法会有一些问题,因为如果我们有一个数组 nums = [5, 5, 5, 5, 5, 5 ,5], target = 5 ,我们获得的mid既不知道开头下标也不知道结尾下标。也就是说,当mid等于target值的时候,我们需要额外做一些事情。
具体细节见代码:
vector<int> searchRange(vector<int>& nums, int target) {if(nums.size() == 0)return {-1, -1};int begin = 0, end = 0;//处理beginint left = 0, right = nums.size()-1;while(left < right){int mid = (left + right)/2;if(nums[mid] < target)  //目标值在右区间left = mid + 1;elseright = mid;}if(nums[left] != target)return {-1, -1};elsebegin = left;//处理endleft = 0, right = nums.size()-1;while(left < right){int mid = (left + right + 1)/2;if(nums[mid] <= target)  //目标值在右区间left = mid;elseright = mid - 1;}end = right;return {begin, end};
}

所以不管是区间还是单个元素的问题,我们可以总结一个通用的模版:

处理区间左端点:

int left = 0, right = nums.size()-1;
while(left < right){int mid = (left + right)/2;if(nums[mid] < target)left = mid + 1;elseright = mid;
}

        通过 nums[mid] < target 这个条件来不断逼近目标值区间的左端点,最终left和right一起指向目标值区间的左端点。

处理区间右端点:

int left = 0, right = nums.size()-1;
while(left < right){int mid = (left + right + 1)/2;if(nums[mid] <= target)left = mid;elseright = mid - 1;
}

        通过 nums[mid] > target 这个条件来不断逼近目标值区间的右端点,最终left和right一起指向目标值区间的右端点。

注意:
1. 为什么在while循环的时候我们判断条件使用的是 left < right 而不是 left <= right 呢?
以处理目标值区间的左端点为例:
根据if else里的条件,left只会在target的左边的区间内移动,不会越过target,也就是说left可以移动到的最右边的位置正好是target的开始位置(如果符合条件的target只有一个,则就是这个元素的位置);
right同理,也会在右边的区间移动,不会越过target,right可以移动到的最左边的位置正好是target的结束位置(如果符合条件的target只有一个,则就是这个元素的位置);
根据以上两点分析,当 left = right 的时候一定是最终结果,要么是target的位置,要么就是无解。如果我们使用的是 left <= right ,当 left = right 的时候还会继续进入循环,循环没有突破边界的可能(即不可能出现left > right的可能),程序就会死循环。
2. 在求中点的时候要向下取整,避免在极端情况下(如果向上取整的话,如果此刻三个下标的位置是nums = [..., left, mid 和 right, ... ],如果下一次循环依旧是更新right的话,三个下标的位置还是nums = [..., left, mid 和 right, ... ])程序进入死循环。同理,在处理右端点的时候需要向上取整。

文章转载自:

http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://00000000.rchsr.cn
http://www.dtcms.com/wzjs/621399.html

相关文章:

  • 网站开发摊销期多少年开发区医院
  • 青岛西海岸新区建设网站潍坊搜易网站建设
  • 代做外国空间网站泉州建设工程质量网站
  • asp网站开发平台网站备案验证码错误
  • 网站建设 cms 下载网站目录怎么做外链
  • 化妆品网站建设经济可行性分析网站建设网站需要什么软件
  • 建设一个营销网站有哪些步骤wordpress站点 HTML
  • 行业网站运营方案o2o网站建设价格
  • 百度首页排名优化公司合肥网络推广优化公司
  • 建设部网站官网合同企业标志logo
  • 网站免费维护期是多少个人域名备案流程
  • 旅游电子商务网站开发制作淄博网站优化公司
  • 广州增城网站建设承包网站开发
  • 宣传网站建设实践报告全球最佳获奖包装设计
  • asp.net 跳转别的网站网站建设市场行情分析
  • 东莞网站建设时间自己一个人做网站可以吗
  • 什么行业需要做网站松原企业网站建设
  • 在百度怎么做网站和推广敬请期待图片
  • 大连网站制作团队视频制作素材免费网站
  • 开发网站要注意什么China wordpress
  • 贵港做网站建设价格费用视频网站怎么做防盗链
  • 网站建设的前途织梦做的网站图片显示不了
  • 郑州大学网页设计与网站建设wordpress输出标签文章
  • 做的不错的h5高端网站江苏江都建设集团有限公司网站
  • 购物网站需要做的功能济南企业宣传片制作公司
  • 免费做网站软件视频googleseo是什么
  • 河南科兴建设有限公司网站长沙建网站制作公司
  • 京东购物网站怎么做网推赚钱项目
  • 花儿直播免费视频观看手机优化大师下载安装
  • 做类似美团的网站免费友情链接网页