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

docker可以做网站吗如何推广网站链接

docker可以做网站吗,如何推广网站链接,wordpress如何开启gzip,正规网站优化公司前言 在算法竞赛中,二分查找使用的频率是非常高的,对于C选手而言,有STL中自带的lower_bound和upper_bound二分查找,可以很方便的进行二分查找。但是非C选手、或者需要自定义多条件查找的情况需要自己写一个二分,本文对…

前言

        在算法竞赛中,二分查找使用的频率是非常高的,对于C++选手而言,有STL中自带的lower_bound和upper_bound二分查找,可以很方便的进行二分查找。但是非C++选手、或者需要自定义多条件查找的情况需要自己写一个二分,本文对几种常见的二分查找写法进行讲解。

        本文使用的编程语言为Java,但代码比较好理解其他语言选手也可以查看本文来学习二分相关内容。


二分查找

        二分查找,也称折半查找,是一种可以在有序序列上进行快速查找的算法,时间复杂度是O(logn)

        常见的二分查找类型,有以下两种:

  • 查找目标值在序列中不小于目标值的第一个元素(同lower_bound,以此查到第一个位置)。

  • 查找目标值在序列中第一个大于目标值的元素(同upper_bound,以此查找到最后一个出现的位置)。

        在设置区间的时候,根据写法的不同分为下面几种:

  • 左闭右闭。

  • 左闭右开。

        根据最终获取答案的写法,又分为下面两种:

  • 在左右指针处取值。

  • 设置额外变量取值。

        本文将分不同情况,写出不同情况下的二分查找模板,帮助大家理解学习。


查找目标值在序列中不小于目标值的第一个元素

        也就是实现一个STL中的lower_bound。

左闭右闭版

/*** [l,r]左闭右闭区间 lower_bound* @param nums 递增序列* @param target 目标值* @return 返回不小于目标值的第一个元素下标*/
int lowBs(int[] nums,int target){int l=0;int r=nums.length-1;while(l<=r){int mid=l+(r-l>>1);if(nums[mid]<target){l=mid+1;}else{r=mid-1;}}return l;
}

左闭右开版

/*** [l,r)左闭右闭区间 lower_bound* @param nums 递增序列* @param target 目标值* @return 返回不小于目标值的第一个元素下标*/
int lowBs(int[] nums,int target){int l=0;int r=nums.length;while(l<r){int mid=l+(r-l>>1);if(nums[mid]<target){l=mid+1;}else{r=mid;}}return l;
}

查找目标值在序列中第一个大于目标值的元素

        也就是实现一个STL中的upper_bound。

左闭右闭版

/***  [l,r]左闭右闭 upper_bound* @param arr 递增序列* @param target 目标值* @return 返回第一个大于目标值的位置*/
int highBs(int[] arr,int target){int l=0;int r=arr.length - 1;while(l<=r){int mid=l+(r-l>>1);if(arr[mid]<=target){l=mid+1;}else{r=mid-1;}}return l;
}

左闭右开版

/***  [l,r)左闭右开 upper_bound* @param arr 递增序列* @param target 目标值* @return 返回第一个大于目标值的位置*/
int highBs(int[] arr,int target){int l=0;int r=arr.length;while(l<r){int mid=l+(r-l>>1);if(arr[mid]<=target){l=mid+1;}else{r=mid;}}return l;
}

易错问题和常见问题总结

一、需要注意区间定义和终止条件是否匹配正确

  • 左闭右闭:初始化 r = nums.length-1,终止条件 while (l <= r)

  • 左闭右开:初始化 r = nums.length,终止条件 while (l < r)

二、指针更新是否正确

  • 左闭右闭:r = mid - 1l = mid + 1

  • 左闭右开:r = mid

三、运算符优先级

        应写为:int mid = l + ( r - l >> 1)

?为什么不能写为 l + r >> 1

        如果可以保证l+r不会溢出的话,其实这样写也可以,但是为了保证不出现数据溢出,更加推荐写上面的形式。

http://www.dtcms.com/wzjs/397856.html

相关文章:

  • 动漫做的游戏 迅雷下载网站有哪些温州企业网站排名优化
  • 论坛型网站开发百度关键词搜索查询
  • 用dw可以做动态网站吗百度不收录网站怎么办
  • 做自媒体关注的网站全网最全搜索引擎app
  • 南通网站建设方法营销案例网站
  • 中国电子商务网站seo分析师招聘
  • 专业做农牧应聘的网站可以发外链的论坛有哪些
  • 建设工程资料下载网站高端网站建设案例
  • 做网站怎样投放广告网站运营主要做什么工作
  • 网站建设行业有什么认证吗关键词搜索热度查询
  • 网站注册域名备案企业培训系统
  • 阐述电子商务网站的建设要求友情链接检测方法
  • 微信服务号可以做万网站么视频剪辑培训班一般学费多少
  • 如何在网站中做二级下拉菜单windows优化大师兑换码
  • 网站建设参考企业网站推广方案策划
  • 做好网站开发工作总结免费发广告网站
  • 网站建设文化服务公司seo推广一个月见效
  • 网站审批号关键词推广系统
  • 银川网站建设公司引擎搜索大全
  • 广东省建设安全监督站的网站seo的课谁讲的好
  • 用网站空间可以做有后台的网站吗自己个人怎样做电商
  • php 网站开发流程页面优化
  • laravel 跳转到其他网站软文代写平台有哪些
  • 广东汽车品牌网站建设专业的网页制作公司
  • 高端网站教建设怎样创建自己的电商平台
  • 公司有域名的怎么建设网站成都seo招聘信息
  • 哪里可以接一些网站项目做万网的app叫什么
  • 上海平台网站建设友情链接还有用吗
  • 寺院的网站怎么做温州云优化seo
  • 做本地网站持续优化完善防控措施