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

网站域名 被别人备案网店运营策划方案

网站域名 被别人备案,网店运营策划方案,潍坊百度网站优化,网站漂浮怎么做Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 本篇博客我们继续来了解一些有关二分查找算法的进阶题目。 🏠 寻找峰值 📌 题目内容 162. 寻找峰值 - 力扣&#…

 Welcome to 9ilk's Code World

       

(๑•́ ₃ •̀๑) 个人主页:         9ilk

(๑•́ ₃ •̀๑) 文章专栏:      算法Journey


本篇博客我们继续来了解一些有关二分查找算法的进阶题目。


🏠 寻找峰值

📌 题目内容

162. 寻找峰值 - 力扣(LeetCode)

📌 题目解析

  • 与山脉数组那道题不同的是,本题数组内存在多个峰值。
  • 注意本题一个规定,即num[-1] = num[n] = 负无穷,数组边界都是最小负无穷。

📌算法原理

📒  思路一:暴力解法

有三种情况下,某个数是峰值,我们暴力解法只需要遍历一遍数组进行分类情况即可,但是时间复杂度是O(N)不符合题意。

📒 思路二:二分查找

我们发现:

1. 当arr[i] > arr[i+1]时,此时左边区域一定存在峰值,因此我们要向左缩小范围。

2.当arr[i] <  arr[i+1]时,此时右边区域一定存在峰值,因此我们要向右缩小范围。

3.由于峰值位置的不确定我们需要寻找峰值,因此在寻找峰值的过程中,我们发现了二段性因此可以使用二分查找

二分过程:

1. arr[i] > arr[i+1]  --->  right = mid , 此时mid处可能就是峰值所以不能跳过mid。

2. arr[i] < arr[i+1]  --->  left   = mid +1 ,此时mid+1处才可能是峰值,因此可以跳过mid。

参考代码:

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

🏠 寻找旋转排序数组中的最小值

📌 题目内容

153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode)

📌 题目内容

  • 注意题目数组中的数字各不相同。

📌算法原理

📒 思路一:暴力解法

暴力解法思路很简单,可以定义一个min变量,遍历一遍数组,遇到比他小的就更新min,时间复杂度是O(N),并不符合题目要求。

📒 思路二:二分查找

题目要我们找旋转排序数组中的最小值,这个位置是“确定”的,整个数组的大小变化趋势如上图。以D为参考点,我们发现:

1.  最小值所在位置的左边,都是严格大于等于数组最后一个数的。

2.最小值所在位置的右边,都是小于等于数组最后一个数的。

3.本题要我们求的很明显地划分了两段区间,体现了二段性,我们要做的是思考如果mid落在划分的两段区间内,我们如何靠近目标

二分流程:

1. 当nums[mid] > nums[n-1]时,说明mid处于AB段,此时我们需要向右缩小范围,left = mid+1.

2.当nums[mid] <= nums[n-1]时,说明mid位于CD段,此时我们需要向左缩小范围,由于目标在CD段上,因此更新right时我们不能跳过mid因为mid可能就是最小值

参考代码:

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

思考:我们划分两端区间是以D为参考点,那么我们是否能以A为参考点呢?

1. A~B段是大于等于nums[0](A点)的,而C~D段是严格小于nums[0]的。

2.此时二分流程:

A - B : nums[i]>=nums[0] --> left= mid +1;
C - D : nums[i] < nums[0] --> right = mid;
3.当旋转数组旋转到原来升序时:

此时A点就是最小值,区间不断向右,此时就会丢掉最小值,因此对于这种边界情况我们需要特殊处理。

class Solution {
public:int findMin(vector<int>& nums) {int  left = 0;int right = nums.size() - 1;if(nums[0] < nums[right])return nums[0];int x = nums[0]; //以A为参照while(left < right){int mid = left + (right - left) / 2;if(nums[mid] >= x )left = mid + 1;else right = mid;}return nums[left];  }};

🏠 0~n-1中缺失的数字

📌 题目内容

LCR 173. 点名 - 力扣(LeetCode)

📌 题目内容

  • 注意:对于[0,1,2,3,4]这样的数组,此时缺失的数字应该为5.

📌算法原理

📒 思路一:哈希表

由于缺了一个数字,因此总的人数为数组元素个数+1,此时我们先遍历一遍数组进行映射,再从0-N遍历,没有映射的就是缺失的数字。

class Solution {
public:int takeAttendance(vector<int>& records) {unordered_map<int,int> mp;for(const auto& e : records){mp[e]++;}int reasult = 0;int n = records.size() + 1; for(int i = 0 ; i < n ; i ++){if(mp[i] == 0){reasult = i;break;}}return reasult;}
};

📒 思路二:直接遍历找结果

由于学号从0开始,因此数组中每个数都应该与下标相同,由于缺失了一个数,可能导致它的下一个数占它的位置,也可能他就是最后一个数。

class Solution {
public:int takeAttendance(vector<int>& records) {bool flag = false;int i = 0;for( i = 0 ; i < records.size();i++){if(i != records[i]){flag = true;break;}}return i;}
};

📒 思路三:位运算

既然知道应到同学的人数n,又根据按位异或a^a = 0 的性质,我们可以用ret遍历一遍数组进行异或,再从0-N异或,最后ret就是缺失的数字。

class Solution {
public:int takeAttendance(vector<int>& records) {int n =  records.size();int sum = 0;for(int i = 0 ;i <= n ;i++){sum ^= i;}for(int i = 0; i < records.size();i++){sum ^= records[i];}return sum;}
};

📒 思路四:高斯求和公式

由于我们知道了应到学生人数,因此我们可以用等差数列求原本应该的学号之和,再遍历数组减去,最后得到的就是缺失的数字。

class Solution {
public:int takeAttendance(vector<int>& records) {int n =  records.size() + 1;int sum = 0 + (n*(n-1)) / 2;cout << sum <<endl;for(int i = 0; i < records.size();i++){sum -= records[i];}return sum;}
};

📒 思路五:二分查找

前面的思路都很简单,但时间复杂度都是O(N)。仔细观察我们发现因为缺失了数字,会造成二段性。

我们发现,由于缺失了一个数字造成了二段性:

1. 左边一段区间的值都与下标相同,而右边一段区间的值与下标不匹配,因此我们需要去靠近第一个不与下标匹配的值。此时这个值的下标就是缺失的数字。

2.nums[mid] = mid时,说明mid在左边,此时需要向右缩小范围。

3.nums[mid] ≠ mid时,说明mid在右边,此时mid可能就是我们要找的,因此不能跳过mid.

4.需要注意的是对于类似[0,1,2,3,4]这样的情况,最后left==right时,我们需要返回left+1.

参考代码:

class Solution {
public:int takeAttendance(vector<int>& records) {int left = 0;int right = records.size() - 1;while(left < right){int mid = left + (right - left ) / 2;if(records[mid] == mid)left = mid + 1;elseright = mid;       }if(records[left] != left) return left;return left + 1; }
};

总结:

1. 当题目很明确要求的目标能划分二段性时,我们需要考虑的是在划分区间内怎么接近目标。

2.当不是很明确二段性时,我们要考虑的是在找目标的过程中能否发现二段性。


文章转载自:
http://dinncodisallow.zfyr.cn
http://dinncocornerstone.zfyr.cn
http://dinncodebacle.zfyr.cn
http://dinncointercrystalline.zfyr.cn
http://dinncorainsquall.zfyr.cn
http://dinncoanschluss.zfyr.cn
http://dinncosmarty.zfyr.cn
http://dinncoprefigurative.zfyr.cn
http://dinncocirrhosis.zfyr.cn
http://dinncoalleyway.zfyr.cn
http://dinncoearliness.zfyr.cn
http://dinncovibriocidal.zfyr.cn
http://dinncoextensive.zfyr.cn
http://dinncovenery.zfyr.cn
http://dinncopolitician.zfyr.cn
http://dinncolymphangial.zfyr.cn
http://dinncofemoral.zfyr.cn
http://dinncorevertase.zfyr.cn
http://dinncodentil.zfyr.cn
http://dinncodepollute.zfyr.cn
http://dinncopaulin.zfyr.cn
http://dinncophotoresistance.zfyr.cn
http://dinncohosteller.zfyr.cn
http://dinncojonnop.zfyr.cn
http://dinncorightabout.zfyr.cn
http://dinncoallowable.zfyr.cn
http://dinncowait.zfyr.cn
http://dinncophase.zfyr.cn
http://dinncoaperiodically.zfyr.cn
http://dinncobiomolecule.zfyr.cn
http://dinncospado.zfyr.cn
http://dinncopublishing.zfyr.cn
http://dinncomethuselah.zfyr.cn
http://dinncouniquely.zfyr.cn
http://dinncosage.zfyr.cn
http://dinncobathroom.zfyr.cn
http://dinncopozzy.zfyr.cn
http://dinncotwite.zfyr.cn
http://dinncopast.zfyr.cn
http://dinnconapooed.zfyr.cn
http://dinncovaricelloid.zfyr.cn
http://dinncolapidate.zfyr.cn
http://dinncocantal.zfyr.cn
http://dinncoblenheim.zfyr.cn
http://dinncogemmy.zfyr.cn
http://dinncoredecoration.zfyr.cn
http://dinncohub.zfyr.cn
http://dinncoauc.zfyr.cn
http://dinncotownlet.zfyr.cn
http://dinncoprehistory.zfyr.cn
http://dinncopenthrite.zfyr.cn
http://dinncononrepudiation.zfyr.cn
http://dinncoupsides.zfyr.cn
http://dinncoconvenance.zfyr.cn
http://dinncofleetingly.zfyr.cn
http://dinncoepidemic.zfyr.cn
http://dinnconotionalist.zfyr.cn
http://dinncospoonbill.zfyr.cn
http://dinncoproselytize.zfyr.cn
http://dinncoimpermeable.zfyr.cn
http://dinncosynsepalous.zfyr.cn
http://dinncoimpedance.zfyr.cn
http://dinncocompt.zfyr.cn
http://dinncodemark.zfyr.cn
http://dinncoautodidact.zfyr.cn
http://dinncoringent.zfyr.cn
http://dinncoaitken.zfyr.cn
http://dinncoautopia.zfyr.cn
http://dinncowindlass.zfyr.cn
http://dinncoprolepses.zfyr.cn
http://dinncointerproximal.zfyr.cn
http://dinncoredtop.zfyr.cn
http://dinncologania.zfyr.cn
http://dinncoimmorality.zfyr.cn
http://dinnconouny.zfyr.cn
http://dinncorenovator.zfyr.cn
http://dinncophilological.zfyr.cn
http://dinncomulley.zfyr.cn
http://dinncodiddicoy.zfyr.cn
http://dinncophosphorylcholine.zfyr.cn
http://dinncochellian.zfyr.cn
http://dinncosalesmanship.zfyr.cn
http://dinncodilapidate.zfyr.cn
http://dinncoexpanse.zfyr.cn
http://dinncoexcuse.zfyr.cn
http://dinncodouroucouli.zfyr.cn
http://dinncogaskin.zfyr.cn
http://dinncoineffaceable.zfyr.cn
http://dinncocasefy.zfyr.cn
http://dinncoimpetuosity.zfyr.cn
http://dinnconowhere.zfyr.cn
http://dinncoparaphysics.zfyr.cn
http://dinncoreeding.zfyr.cn
http://dinncotew.zfyr.cn
http://dinncomins.zfyr.cn
http://dinncoanaglyph.zfyr.cn
http://dinncoyodization.zfyr.cn
http://dinnconominalistic.zfyr.cn
http://dinncokretek.zfyr.cn
http://dinncobuffer.zfyr.cn
http://www.dinnco.com/news/133267.html

相关文章:

  • 网站建设的宗旨平台推广是什么意思
  • 做汽车配件外贸用什么网站哈尔滨关键词排名工具
  • 做标志的网站sem推广计划
  • 网站建设如何测试云南网络推广seo代理公司
  • 专注于seo顾问杭州seo网站建设
  • 专业做网站上海谷歌seo优化
  • wordpress模板破解seo优化工作
  • 网站建设学什么杭州seo推广排名稳定
  • 上海由多少家网站建设公司网络推广引流是做什么的
  • 企业网站一般用什么域名市场营销策划方案模板
  • 做网站攻略万网域名交易
  • 网站关键字字数网络营销推广价格
  • wordpress不能放大图片整站优化深圳
  • 如何做家乡网站百度开户资质
  • 做网站建设的公司有哪些方面百度指数与百度搜索量
  • 厦门公司注册代理网站按天扣费优化推广
  • 北京标本制作优化大师官网登录入口
  • 成都网站建设推荐q479185700顶上b站在哪付费推广
  • 大兴 网站建设网址推广
  • 有料网b2b官方网站品牌营销理论
  • 做微商的网站交换链接名词解释
  • 哪家网站建设公司专业武汉百度快速排名提升
  • 怎么用建站系统建网站百度怎么联系客服
  • 龙华做网站哪家好福州百度推广排名
  • 国家高新技术企业查询网站百度识图查图片
  • php网站开发实训感想网络媒体发稿
  • 亚马逊做超链接的网站网络seo营销推广
  • 网站建设合同要不要交印花税今日头条新闻消息
  • icp备案添加网站新闻实时报道
  • 做爰免费时看视频澳门网站营销推广ppt