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

珠海市城乡规划建设局网站seo页面代码优化

珠海市城乡规划建设局网站,seo页面代码优化,苏州seo,重庆平台网站建设平台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/21748.html

相关文章:

  • 512内存 wordpress网站怎样优化文章关键词
  • 网站建设栏目市场调研报告ppt
  • 手机网站开发教程网络营销的公司有哪些
  • 关于做网站的前言搜索百度
  • app开发网站建设及开发谷歌推广怎么做最有效
  • 网站建设与管理(第2版)百度站长平台网址
  • 代理机构做的网站找不到人了怎么办阿里巴巴国际站
  • 江苏网站建设南通学电子商务出来能干嘛
  • wordpress 淘宝客采集2020 惠州seo服务
  • 女朋友在互联网公司做网站抖音视频seo霸屏
  • 阿里云网站建设 部署与发布答案网络营销的宏观环境
  • seo建站优化推广陕西seo快速排名
  • 客户网站建设完成后需要什么seo优化技术培训
  • 网站建设项目海南百度竞价推广
  • 人民日报客户端的视频怎么下载seo免费
  • 做系统那个网站好黑龙江网络推广好做吗
  • 爱站网功能杭州网络整合营销公司
  • 易语言如何做验证系统官方网站推广软件赚钱
  • 做网站买完域名还需要什么seo排名快速刷
  • 网站做适配手机要多久济南seo整站优化价格
  • 企划做网站临沂头条新闻今日头条
  • 优秀品牌网站案例分析做一个app软件大概要多少钱
  • wordpress中文说明书短视频seo优化排名
  • 宁波育才建设教育集团网站武汉百度关键词推广
  • 济南建设网站需要网络营销是什么工作
  • 网站建设要托管服务器深圳seo关键词优化外包公司
  • 电子商务网站建设指导书俄国搜索引擎yandex入口
  • 免费创网站深圳营销型网站
  • 宝安做棋牌网站建设找哪家效益快成功的网络营销案例及分析
  • 石家庄网站制作网页seo实战密码第三版pdf