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

网站出现风险如何处理方法京东云wordpress

网站出现风险如何处理方法,京东云wordpress,网站开发 为什么要用缩略图,hao123文件在哪里前言 上篇介绍了二分法的相关原理并结合具体题目进行讲解运用#xff0c;本篇将加大难度#xff0c;进一步强化对二分法的掌握。 一. 寻找峰值 1.1 题目链接#xff1a;https://leetcode.cn/problems/find-peak-element/description/ 1.2 题目分析: 题目要求返回数组内… 前言 上篇介绍了二分法的相关原理并结合具体题目进行讲解运用本篇将加大难度进一步强化对二分法的掌握。 一. 寻找峰值 1.1 题目链接https://leetcode.cn/problems/find-peak-element/description/ 1.2 题目分析: 题目要求返回数组内任一峰值元素的下标时间复杂度要求为log n排除暴力解法直接遍历的可能. 峰值元素大于其左右相邻元素的元素。 1.3 思路讲解 题目给出提示可以假设nums[-1]nums[n]负无穷且要求时间复杂度为log n因此可考虑寻找二段性利用二分法求解。 寻找⼆段性 任取⼀个点 i 与下⼀个点 i 1 会有如下两种情况 • arr[i] arr[i 1] 此时「左侧区域」⼀定会存在⼭峰因为最左侧是负⽆ 穷那么我们可以去左侧去寻找结果 • arr[i] arr[i 1] 此时「右侧区域」⼀定会存在⼭峰因为最右侧是负⽆ 穷那么我们可以去右侧去寻找结果。 当我们找到「⼆段性」的时候就可以尝试⽤「⼆分查找」算法来解决问题。 1.4 代码实现 class Solution { public:int findPeakElement(vectorint nums) {int left0,rightnums.size()-1;while(leftright){int midleft(right-left1)/2;if(nums[mid]nums[mid-1]){leftmid;}else{rightmid-1;}}return left;} };二. 寻找旋转排序数组中的最小值 2.1 题目链接https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/description/ 2.2 题目分析 现有一个按照升序排列且元素值各不相同的数组每旋转一次即为把数组原先末尾的值调向第一个将该数组旋转数次后要求返回此时数组内的最小元素时间复杂度为log n 2.3 思路讲解 旋转后的数组满足下图情形其中ABCD均为数组按下标顺序所对应的值且C即为所求。 以D为界限A-B内全都大于DC-D内全都小于D满足二段性因此可考虑使用二分法求解具体步骤如下 令left0rightnums.size()-1,targetnums[right]其中target即为上图中的D求取中点midleft(right-left)/2如果nums[mid]target说明mid此时位于AB区间内需要更新leftmid1如果nums[mid]target说明mid此时位于CD区间内需要更新rightmidwhile循环二分最终nums[left]即为所求。 2.4 代码实现 class Solution { public:int findMin(vectorint nums) {int left0,rightnums.size()-1;int targetnums[right];//靶区间while(leftright){int midleft(right-left)/2;if(nums[mid]target){leftmid1;}//更新leftelse{rightmid;}//更新right}return nums[left];} };三. 搜索插入位置 3.1 题目链接https://leetcode.cn/problems/search-insert-position/description/ 3.2 题目分析 题中给出一个升序数组和target要求查找target在数组内的位置如果target不存在则返回其应该插入的位置时间复杂度为logn 3.3 思路讲解 时间复杂度为logn且满足二段性因此可考虑使用二分法解决具体步骤如下 令left0rightnums.size()-1,分别作为左右区间求取中点midleft(right-left)/2如果nums[mid]target说明[left,mid]内的所有元素均小于target将left更新为mid1如果nums[mid]target,说明[mid,right]内所有元素均大于等于target将right更新为mid.while循环二分最终leftright此时如果nums[left]target说明数组内所有元素均小于target需要在末尾插入返回left1反之则正常返回left即可 3.4 代码实现 class Solution { public:int searchInsert(vectorint nums, int target) {int left0,rightnums.size()-1;while(leftright){int midleft(right-left)/2;if(nums[mid]target){leftmid1;}//更新leftelse{rightmid;}//更新right}if(nums[left]target){return left1;}return left;} };四. 点名 4.1 题目链接https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/description/ 4.2 题目分析 数组内有n个元素代表0-n但其中缺少了0-n中的一个元素返回该值 4.3 思路讲解 该题方法多样可以采取异或法总和累减法等方法解答。由于本篇主题为二分法因此只讲解二分法如何解答该题。 二分法的重点为二段性 观察可知假设缺失元素为target在target左侧[left,target]内每一个元素的值对应其下标在target右侧[target,right]内每一个元素的值都比其下标大1 因此该题二分法具体步骤如下 令left0,rightnums.size()-1作为左右边界 求取中点,midleft(right-left)/2如果nums[mid]mid,则更新leftmid1 如果nums[mid]mid,更新rightmid while循环二分后right即为所求 需注意一种特殊情况当rightnums[right]时说明缺失的数字为n[left,right]内所有元素均有下标一一对应此时需要返回right1 4.4 代码实现 class Solution { public:int takeAttendance(vectorint records) {int left0,rightrecords.size()-1;while(leftright){int midleft(right-left)/2;if(records[mid]mid){leftmid1;}//更新为leftelse{rightmid;}//更新right}if(records[right]right){return right1;}//缺少的元素为nelse{return right;}} };小结 关于二分法的介绍就暂告段落啦希望能对大家的学习产生帮助欢迎各位佬前来支持斧正
http://www.dnsts.com.cn/news/168473.html

相关文章:

  • 沭阳县建设局网站用php做的网站论文
  • 织梦五彩婚纱源码网_婚庆策划网站php源码官方网站开发哪家便宜
  • 网站设计编程有哪些创建个人邮箱
  • 手机网站建设服务哪家好优帮云查询数据云查询
  • 嘉兴做微网站多少钱网络广告和传统广告的区别
  • 摄影后期教程网站上海公司黄页网站
  • 网站制作公司报价sae 网站备案
  • 广州做餐饮的招聘网站泉州seo网站推广
  • 网站空间网上怎么找承包小工程
  • 随州网站建设外包公司北京软件开发公司排行
  • 网站的二级目录怎么做动漫设计一般用什么软件
  • 做网站霸屏公司销售好做吗html背景图片代码
  • 网站建设 成都今网科技WordPress到底好不好用
  • 长沙网站搭建公司联系方式帮做暑假作业网站
  • 怎么在网站上做链接wordpress 获取文章评论
  • 山东住房建设部官方网站seo云优化公司
  • wordpress入站密码大连公共资源交易中心
  • 自己设计logo网站郑州平面设计公司排名
  • 成都网站优化推广方案wordpress自动文章排版
  • 优化大师官方免费下载长沙seo优化价格
  • 网站搭建响应式农业网站建设
  • 区块链网站建设方案珠海溢动网络科技有限公司
  • 折800网站源码wordpress插件安装目录
  • 东营市做网站的公司广州商城型网站建设
  • 上市公司做家具网站网站开发预留接口
  • 百度网站快速优化公司官网建设
  • 大连建设学院网站网站开发接单网站
  • 做网站要学的教程珠海市今天刚刚发生的新闻
  • 网站建设发布教程视频教程域名解析到网站需要怎么做
  • 南京站建设wordpress伪静态很慢