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

网站开发建设企业株洲seo排名

网站开发建设企业,株洲seo排名,无为建设局网站,wordpress全屏单页1.二分查找 二分查找的一个前提就是要保证数组是有序的&#xff08;不准确&#xff09;&#xff01;利用二段性&#xff01; 1.朴素二分模板 朴素二分法的查找中间的值和目标值比较 while(left < right) // 注意是要&#xff1a; < {int mid left (right -left) / 2;…
1.二分查找

二分查找的一个前提就是要保证数组是有序的(不准确)!利用二段性!
1.朴素二分模板
朴素二分法的查找中间的值和目标值比较

while(left <= right)	// 注意是要: <=
{int mid = left + (right -left) / 2;	// 避免溢出if(条件){left = mid + 1;}else if(条件){right = mid -1;}else{return 结果;}
}

练习题目:
leetcode704. 二分查找
leetcode33 搜索旋转排序数组
在这里插入图片描述
1、nums[mid] >= nums[left] (以左端点为参考点)说明mid 落在的AB 端 否则落在了CD段
2、当mid落在AB段中,当 target >= nums[left] (以左端点为参考点)&& target < nums[mid] 说明了right = mid -1。否则就是落在了[mid + 1,B]段,移动left = mid + 1;
3、当mid落在了CD段中,当 target <= nums[right](以右端点为参考点) && target > nums[mid] 说明移动left = mid -1。否则right = mid - 1

2.查找左右边界的二分模板
这个模板也可以解决第一个模板的题,他比较万能。

左边界模板
while(left < right)
{int mid = left + (right - left) / 2;if(条件) left = mid + 1;else right = mid;
}
右边界模板
while(left < right)
{int mid = left + (right - left + 1) / 2;if(条件) left = mid;else right = mid -1;
}

leetcode162 寻找峰值
峰值大于相邻的左和右,mid可以是落在任何位置。这里用到了查找右边界的二分模板
1、当nums[mid] > nums[mid -1] 说明是在递增left 往右移动。left = mid (这里只判断了mid 的左边,mid可能就是峰值)
2、else (即:nums[mid] < nums[mid - 1] ) 说明在递减区域如BC。right = mid - 1。
在这里插入图片描述
参考代码:

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

leetcode35 搜索插入位置
找到数组中的元素,如过找不到,返回target插入的下标索引。
在这里插入图片描述

如上图数组的左边部分的元素是 <target,右边>= target
1、nums[mid] < target 说明 left = mid + 1
2、nums[mid] >= target 说明 right = mid。有可能mid就是要找的元素
3、当循环结束后(left == right)说明数组中的值没有对应的target。当nums[left] < target。说明target要插入在left后面返回 left + 1 否则返回 left。
参考代码:

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

leetcode34、在排序数组中查找元素的第一个和最后一个位置
找到最左边的(第一个位置):
在这里插入图片描述

1、当nums[mid] < target则left = mid + 1
2、当nums[mid] >= target 则right = mid (mid可能就是最左边的target)

找到最右边的(最后一个位置):
在这里插入图片描述
1、当nums[mid] > target 则right = mid - 1
2、当nums[mid] <= target 则 left = mid

参考代码:

vector<int> searchRange(vector<int>& nums, int target) 
{if(nums.size() == 0) return {-1,-1};vector<int> ret;int left = 0, right = nums.size() -1;while(left < right){int mid = left + (right -left) / 2;if(nums[mid] < target){left = mid + 1;}else{right = mid;}}nums[left] == target ? ret.push_back(left) : ret.push_back(-1);left = 0;   // 可以的不用重置right = nums.size() -1;while(left < right){int mid = left + (right - left + 1) / 2;if(nums[mid] > target){right = mid - 1;}else{left = mid;}}nums[right] == target ? ret.push_back(left): ret.push_back(-1);return ret;
}

leetcode153. 寻找旋转排序数组中的最小值
在这里插入图片描述
1、求最小值,一定是在CD段的,准确说是端点C!但是mid可能会AB段,当落到AB就要移动left,什么条件满足移动呢(参考点是什么)
2、当 nums[mid] > nums[right] 时 left = mid - 1
3、当 nums[mid] <= nums[right] 时 right = mid

int findMin(vector<int>& nums) 
{int left = 0,right = nums.size() -1;while(left < right){int mid = left + (right - left) / 2;if(nums[mid] > nums[right]){left = mid + 1;}else{right = mid;}}return nums[left];
}
http://www.hengruixuexiao.com/news/31458.html

相关文章:

  • 网站和app的区别东莞网站推广的公司
  • 有没有网站找人帮忙做图百度一下 你就知道首页
  • 网站被快照被劫持wordpress国际机票搜索量大涨
  • 建网站一定要备案吗友情链接的作用
  • 成都网站建设公司推荐长沙网站seo优化排名
  • 建网站的目的广告主资源哪里找
  • 微信小程序推送消息给用户seo怎么优化
  • 外围网站做代理软文广告经典案例300大全
  • 企业网站改版计划书深圳外贸网站制作
  • 天津建设网站公司百度网盘资源搜索引擎搜索
  • 佛山网站建设怎样做seo优化个人博客
  • 帮做暑假作业网站seo公司 上海
  • dreawever如何做本地网站济南百度竞价开户
  • 高端做网站公司网络营销推广方案前言
  • 网站建设合同2018百度百科搜索入口
  • 彩票网站用什么软件做商丘seo推广
  • wordpress域名搬家优化内容
  • 素质课网站设计与建设百度天眼查公司
  • 母婴网站设计分析谷歌seo优化
  • dede cms 网站模板百度最新版app下载安装
  • 网站开发遇到的问题完整的社群营销方案
  • 綦江网站建设公司学网络运营在哪里学比较好
  • 网站建设报价明细怎么注册一个网站
  • 张店网站设计百度竞价查询
  • 国内知名商业设计公司关键词优化是什么
  • 做设计一般用的素材网站是什么建网站需要什么
  • 国内广告公司排行重庆seo技术教程
  • 做网站婚介简历怎么写seo包括哪些方面
  • 织梦网站日志seo案例分析
  • 三亚网吧多少钱一个小时重庆seo管理平台