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

建设家装网站企业网站策划过程

建设家装网站,企业网站策划过程,吴江市中云建设监理有限公司网站,建设摩托官方网站个人主页 #xff1a; 个人主页 个人专栏 #xff1a; 《数据结构》 《C语言》《C》《算法》 文章目录 前言一、题目解析二、解题思路1. 暴力查找2. 一次二分查找 部分遍历3. 两次二分查找分别查找左右端点1.查找区间左端点2. 查找区间右端点 三、代码实现总结 前言 本篇文… 个人主页 个人主页 个人专栏 《数据结构》 《C语言》《C》《算法》 文章目录 前言一、题目解析二、解题思路1. 暴力查找2. 一次二分查找 部分遍历3. 两次二分查找分别查找左右端点1.查找区间左端点2. 查找区间右端点 三、代码实现总结 前言 本篇文章仅是作为小白的我的一些理解如果有错误的地方希望大佬们指出。 题目链接 34. 在排序数组中查找元素的第一个和最后一个位置 一、题目解析 本题数组元素不唯一可能存在多个target我们就是要找到target区间中的左端点与右端点。 如果没有target区间则返回{-1, -1} 二、解题思路 1. 暴力查找 直接遍历数组如果可以查找到target则返回第一次与最后一次遇到target的下标如果不能查找到target则返回{-1 -1}。 时间复杂度O(n) 2. 一次二分查找 部分遍历 优先使用二分查找target如果可以查找到就从该下标开始向左向右遍历数组返回最左边与最右边的target。如果不能查找到返回{-1, -1} 时间复杂度O(logn n) 对于{3,3,3,3,3,3,3,3} target 3时间复杂度会退化为O(n) 3. 两次二分查找分别查找左右端点 1.查找区间左端点 我们对示例1使用 “ 二段性 ” 可以发现示例一被target分成了两部分小于target部分{5, 7, 7}和大于等于target部分{8, 8, 10}。 如果中点mid到小于target的部分区间[ left, mid ]这一区间都小于target不可能是target区间的左端点那么left mid 1 如果中点mid到大于等于target的部分区间[ mid, right ]这一区间都大于等于target 其中mid有可能是target区间的左端点那么right mid 细节处理 循环条件left right 如果循环条件为left right就会死循环。 如上图4所示nums[mid] targetright mid。此时right依然与left指向同一个元素。 求mid的操作 向下取整mid left (right - left)/2 向上取整mid left (right - left 1)/2二者主要区别在与如果区间[ left, right]中的元素个数是偶数时向下取整取的是中间两个数中左边的数向上取整取的是中间两个数中右边的数。 此时查找区间左端点求mid使用向上取整会导致死循环。 2. 查找区间右端点 查找区间右端点思路与查找区间左端点类似。 我们使用“二段性”发现示例一被target分成了两部分小于等于target部分{5, 7, 7, 8, 8} 和大于target部分{10}。 如果点mid到小于等于target的部分区间[ left, mid ] 这一区间都小于等于target其中mid可能就是target区间的右端点那么left mid 如果点mid到大于target的部分区间[ mid, right ]这一区间都大于target不可能是target区间的右端点那么right mid - 1 细节处理 循环条件left right 理由与查找左端点使的循环条件相同如果循环条件为left right会死循环 如上图4所示nums[mid] targetleft mid 此时left依然与right指向同一个元素。 求mid的操作这里就要用向上取整的方法 mid left (right - left 1)/2 此处查找区间右端点如果使用向下取整会导致死循环 三、代码实现 两次二分查找分别查找左右端点 class Solution { public:vectorint searchRange(vectorint nums, int target) {vectorint ret({-1, -1});int n nums.size();if(n 0)return ret;int left 0, right n-1;// 查找左端点while(left right){int mid left (right - left)/2;if(nums[mid] target)left mid1;elseright mid;}if(nums[right] target)ret[0] right;// 查找右端点left 0, right n-1;while(left right){int mid left (right - left 1)/2;if(nums[mid] target)right mid - 1;elseleft mid;}if(nums[right] target)ret[1] right;return ret;} };总结 以上就是我对于在排序数组中查找元素的第一个和最后一个位置的理解。感谢支持
http://www.sadfv.cn/news/268406/

相关文章:

  • 建设企业网站体会wordpress文章页面没有格式调整
  • 做推送的网站室内设计者联盟网
  • 大连网站建站wordpress如何连接图册
  • 做网站1500全包哈尔滨模板建站品牌
  • 长沙口碑好网站建设企业策划书模板免费下载的网站
  • 网站tag 怎么实现十大免费cad制图软件
  • 陕西手机网站建设陕西恒业建设集团网站
  • 广州h5网站编程开发
  • 素质课网站设计与建设seo关键词查询排名软件
  • 网站虚假备案wordpress树形主题
  • 吉安建设工程项目网站今天最新新闻
  • 古风网站建设广州vi设计公司
  • 《网站建设 补充合同陕西省建设网三类人员证书查询系统
  • 学校内部网站开发价格做网站499
  • 网站设计的初衷4G访问wordpress
  • 一建 建设网站首页做网站为何要续费
  • 网站开发技术 创新点网站上添加百度地图导航
  • 梅江区住房和城乡建设局官方网站电商培训班
  • 常州设计网站自助建站最好的平台
  • 电子商务网站建设的核心多选怎么做婚庆网站平台
  • 企业网站优化官网神农架网站设计
  • 怎么样才能做好网站建设wordpress无觅
  • 网站开发 网页上传 网页制作外链兔
  • 大学做网站有哪些最有效的网站推广公司
  • 好用建站模板国内建设网站的公司
  • 苏州专业建设网站湛江seo推广外包
  • 网站怎么访问自己做的网页网站制作案例哪家强
  • 河南房产网站建设大连 做网站公司
  • 贵阳网站推广优化公司方案模板
  • 手机网站怎么打开做研学的企业网站