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

展示型企业网站例子wordpress设定域名

展示型企业网站例子,wordpress设定域名,优化大师免费版下载,做网站什么时候要用到虚拟主机文章目录 模板搜索插入位置x的平方根山峰数组的峰顶索引寻找峰值寻找旋转数组中的最小值 模板 左边界: 左边区间 [left, resLeft - 1] 都是⼩于 x 的; ▪ 右边区间(包括左边界) [resLeft, right] 都是⼤于等于 x 的; •…

文章目录

  • 模板
  • 搜索插入位置
  • x的平方根
  • 山峰数组的峰顶索引
  • 寻找峰值
  • 寻找旋转数组中的最小值

模板

在这里插入图片描述
左边界:
左边区间 [left, resLeft - 1] 都是⼩于 x 的;
▪ 右边区间(包括左边界) [resLeft, right] 都是⼤于等于 x 的;
• 因此,关于 mid 的落点,我们可以分为下⾯两种情况:
◦ 当我们的 mid 落在 [left, resLeft - 1] 区间的时候,也就是 arr[mid] <
target 。说明 [left, mid] 都是可以舍去的,此时更新 left 到 mid + 1 的位置,
继续在 [mid + 1, right] 上寻找左边界;
◦ 当 mid 落在 [resLeft, right] 的区间的时候,也就是 arr[mid] >= target 。
说明 [mid + 1, right] (因为 mid 可能是最终结果,不能舍去)是可以舍去的,此时
更新 right 到 mid 的位置,继续在 [left, mid] 上寻找左边界;
• 由此,就可以通过⼆分,来快速寻找左边界;
注意:这⾥找中间元素需要向下取整。
因为后续移动左右指针的时候:
• 左指针: left = mid + 1 ,是会向后移动的,因此区间是会缩⼩的;
• 右指针: right = mid ,可能会原地踏步(⽐如:如果向上取整的话,如果剩下 1,2 两个元素, left == 1 , right == 2 , mid == 2 。更新区间之后, left,right,mid 的值没有改变,就会陷⼊死循环)。
因此⼀定要注意,当 right = mid 的时候,要向下取整。

右边界:
⽤ resRight 表⽰右边界;
◦ 我们注意到右边界的特点:
▪ 左边区间 (包括右边界) [left, resRight] 都是⼩于等于 x 的;
▪ 右边区间 [resRight+ 1, right] 都是⼤于 x 的;
• 因此,关于 mid 的落点,我们可以分为下⾯两种情况:
◦ 当我们的 mid 落在 [left, resRight] 区间的时候,说明 [left, mid - 1]
( mid 不可以舍去,因为有可能是最终结果) 都是可以舍去的,此时更新 left 到mid的位置; ◦ 当 mid 落在 [resRight+ 1, right] 的区间的时候,说明 [mid, right] 内的元素是可以舍去的,此时更新 right 到 mid - 1 的位置;
• 由此,就可以通过⼆分,来快速寻找右边界;
注意:这⾥找中间元素需要向上取整。
因为后续移动左右指针的时候:
• 左指针: left = mid ,可能会原地踏步(⽐如:如果向下取整的话,如果剩下 1,2 两个元素, left == 1, right == 2,mid == 1 。更新区间之后, left,right,mid 的值没有改变,就会陷⼊死循环)。
• 右指针: right = mid - 1 ,是会向前移动的,因此区间是会缩⼩的;
因此⼀定要注意,当 right = mid 的时候,要向下取整。

搜索插入位置

在这里插入图片描述

class Solution {
public:int searchInsert(vector<int>& nums, int target) {if(nums[nums.size()-1]<target) return nums.size();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; }return left;}
};

a. 分析插⼊位置左右两侧区间上元素的特点:
设插⼊位置的坐标为 index ,根据插⼊位置的特点可以知道:
• [left, index - 1] 内的所有元素均是⼩于 target 的;
• [index, right] 内的所有元素均是⼤于等于 target 的。
b. 设 left 为本轮查询的左边界, right 为本轮查询的右边界。根据 mid 位置元素的信
息,分析下⼀轮查询的区间:
▪ 当 nums[mid] >= target 时,说明 mid 落在了 [index, right] 区间上,
mid 左边包括 mid 本⾝,可能是最终结果,所以我们接下来查找的区间在 [left,
mid] 上。因此,更新 right 到 mid 位置,继续查找。
▪ 当 nums[mid] < target 时,说明 mid 落在了 [left, index - 1] 区间上,mid 右边但不包括 mid 本⾝,可能是最终结果,所以我们接下来查找的区间在 [mid + 1, right]上。因此,更新 left 到 mid + 1 的位置,继续查找。
c. 直到我们的查找区间的⻓度变为 1 ,也就是 left == right 的时候, left 或者
right 所在的位置就是我们要找的结果。

x的平方根

在这里插入图片描述

class Solution {
public:int mySqrt(int x) {if(x<1) return 0;int left=1,right=x;while(left<right){long long mid=left+(right-left+1)/2;if(mid*mid<=x) left=mid;else right=mid-1; }return left;}
};

设 x 的平⽅根的最终结果为 index :
a. 分析 index 左右两次数据的特点:
▪ [0, index] 之间的元素,平⽅之后都是⼩于等于 x 的;
▪ [index + 1, x] 之间的元素,平⽅之后都是⼤于 x 的。
因此可以使⽤⼆分查找算法。

山峰数组的峰顶索引

在这里插入图片描述

class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {int left=0,right=arr.size()-1;while(left<right){int mid=left+(right-left+1)/2;if(arr[mid]>arr[mid-1]) left=mid;else right=mid-1;}return left;}
};

分析峰顶位置的数据特点,以及⼭峰两旁的数据的特点:
◦ 峰顶数据特点: arr[i] > arr[i - 1] && arr[i] > arr[i + 1] ;
◦ 峰顶左边的数据特点: arr[i] > arr[i - 1] && arr[i] < arr[i + 1] ,也就是
呈现上升趋势;
◦ 峰顶右边数据的特点: arr[i] < arr[i - 1] && arr[i] > arr[i + 1] ,也就是
呈现下降趋势。
2. 因此,根据 mid 位置的信息,我们可以分为下⾯三种情况:
◦ 如果 mid 位置呈现上升趋势,说明我们接下来要在 [mid + 1, right] 区间继续搜索;
◦ 如果 mid 位置呈现下降趋势,说明我们接下来要在 [left, mid - 1] 区间搜索;
◦ 如果 mid 位置就是⼭峰,直接返回结果。

寻找峰值

在这里插入图片描述

class Solution {
public:int findPeakElement(vector<int>& nums) {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;}
};

寻找⼆段性:
任取⼀个点 i ,与下⼀个点 i + 1 ,会有如下两种情况:
• arr[i] > arr[i + 1] :此时「左侧区域」⼀定会存在⼭峰(因为最左侧是负⽆
穷),那么我们可以去左侧去寻找结果;
• arr[i] < arr[i + 1] :此时「右侧区域」⼀定会存在⼭峰(因为最右侧是负⽆
穷),那么我们可以去右侧去寻找结果。
当我们找到「⼆段性」的时候,就可以尝试⽤「⼆分查找」算法来解决问题。

寻找旋转数组中的最小值

在这里插入图片描述

class Solution {
public:int findMin(vector<int>& nums) {int n = nums.size();int left = 0, right = n - 1;// 如果数组没有旋转,直接返回第一个元素if (nums[left] < nums[right]) {return nums[left];}// 二分查找while (left < right) {int mid = left + (right - left) / 2;// 如果中间元素大于第一个元素,说明最小元素在右半部分if (nums[mid] > nums[right]) {left = mid + 1;} else {// 否则,最小元素在左半部分right = mid;}}return nums[left];}
};

在这里插入图片描述
其中 C 点就是我们要求的点。
⼆分的本质:找到⼀个判断标准,使得查找区间能够⼀分为⼆。
通过图像我们可以发现, [A,B] 区间内的点都是严格⼤于 D 点的值的, C 点的值是严格⼩于 D 点的值的。但是当 [C,D] 区间只有⼀个元素的时候, C 点的值是可能等于 D 点的值的。
因此,初始化左右两个指针 left , right :
然后根据 mid 的落点,我们可以这样划分下⼀次查询的区间:
▪ 当 mid 在 [A,B] 区间的时候,也就是 mid 位置的值严格⼤于 D 点的值,下⼀次查
询区间在 [mid + 1,right] 上;
▪ 当 mid 在 [C,D] 区间的时候,也就是 mid 位置的值严格⼩于等于 D 点的值,下次查询区间在 [left,mid] 上。
当区间⻓度变成 1 的时候,就是我们要找的结果。

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

相关文章:

  • wordpress主题微信小程序整站优化深圳
  • 南通制作网站公司上海松江水处理网站建设
  • 揭阳网站制作方案定制个人备案网站做淘宝客可以用吗
  • 青岛 制作网站 大点的公司wordpress网站主修改
  • 公司做网站的价格几千元百度seo关键词优化推荐
  • 智能搭建网站简单的个人网页制作html
  • 网站做视频的怎么赚钱网站建设伍际网络
  • 建设门户网站 业务模板百度不更新网站
  • 连云港市网站设计wordpress 爱情
  • 自己的网站源代码一片空白做网站会犯法吗
  • 东莞网站推广运营公司2345网址大全浏览器
  • 上海浦东新区科技网站建设网站内部seo优化包括
  • 迅博威网站建设平台网站建设公司
  • 网站建设html代码优化网站检测工具
  • 做自己的购物网站做网站需要用什么语言
  • 湖南长沙门户网站濮阳新闻综合频道直播
  • 云南建设招标网站首页青创云网站建设
  • 营销策划与运营公司成都网站关键词推广优化
  • 凡网站创建wordpress上传html代码
  • 长沙网站开发推荐PS做任务的网站
  • 定远县可以做网站的地方网站含义
  • 前端的网站重构怎么做做网站的服务器用什么系统
  • 素材网站上的元素是怎么做的最好的做网站公司
  • 靖江市住房和城乡建设局的网站重庆广告公司前十名
  • 遵义做网站推广网站空间一定要买吗
  • 用模板做企业网站wordpress windows 10
  • 厦门建公司网站专业网站建设经费申请
  • 东莞网站改版国外二级域名免费申请
  • 北京网站建设备案代理网络营销推广目标
  • wordpress 客户端源码网络推广优化招聘