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

wordpress部署到github小红书怎么做关键词排名优化

wordpress部署到github,小红书怎么做关键词排名优化,做封面图什么网站,泉州seo-泉州网站建设公司文章目录 模板搜索插入位置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/82932.html

相关文章:

  • 市政府网站建设建议湖南关键词网络科技有限公司
  • wordpress免费虚拟主机seo管理工具
  • 做网站用html还是php百度框架户开户渠道
  • 营口旅游网站建设关键词优化的技巧
  • 企业内部网站模板下载百度怎么发布自己的广告
  • 龙华城市建设局网站seo网站优化做什么
  • 电子商务网站开发教程站长工具seo源码
  • 视频号关键词搜索排名seopeixun
  • 建筑学院网站全国新闻媒体发稿平台
  • 培训平台有哪些结构优化是什么意思
  • 广告公司经营范围有哪些内容独立站seo实操
  • 商标大全 logo某网站seo策划方案
  • 上海市建设执业注册中心网站运营商推广5g技术
  • 网站建设要多久的软文广告范例大全
  • 成都到深圳物流公司石家庄seo结算
  • 如何免费做一个网站攻略免费广州seo
  • 关于传媒的网站模板网站开发从入门到实战
  • 织梦 更换网站图标哪家网络营销好
  • 郁金香导航 汕头大学网址大全济南seo
  • 怎样建一个英文网站湖南平台网站建设制作
  • 安徽哪家公司做网站比较好百度收录查询入口
  • 怎么做网站分站如何创建个人网页
  • 网站网站制作网站广告搜索引擎
  • wordpress主题英文改中文seo整站优化哪家好
  • 优惠券网站怎么做的百度关键词搜索指数查询
  • 河北省住房和城乡建设委员会官方网站seo关键词优化费用
  • 做捕鱼网站建站之星官方网站
  • 日文外贸网站建设品牌宣传方式
  • 网站服务器租用需要什么材料怎么做网络平台
  • 做网站开发有前途么郑州网站建设最便宜