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

开封建站公司河南信合建设投资集团有限公司网站

开封建站公司,河南信合建设投资集团有限公司网站,如花建站,杭州淘策网站开发我的学习来源主要是灵神的力扣题解 下面是一个简单的二分查找的代码 public static int findPeakElement(int[] nums) {int left 0;int right nums.length - 2; // 初始右边界为倒数第二个元素while (left < right) {int mid left (right - left) / 2; // 防止整数溢出…

我的学习来源主要是灵神的力扣题解

下面是一个简单的二分查找的代码

 
public static int findPeakElement(int[] nums) {int left = 0;int right = nums.length - 2; // 初始右边界为倒数第二个元素while (left <= right) {int mid = left + (right - left) / 2; // 防止整数溢出的中间值计算// 比较中间元素和右侧元素if (nums[mid] < nums[mid + 1]) {left = mid + 1; // 峰值在右侧,调整左边界} else {right = mid - 1; // 峰值在左侧或当前元素为峰,调整右边界}}return left; // 最终left指向峰值位置}

这个代码很常见,每次去取mid然后比较就ok了,适用于有序数组。时间复杂度logn

之前做过一家大厂笔试题,其中有道题叫找出可能存在的二分序列有下面几个

10 20 30 40

40 10 20 30

20 30 40 10

40 20 10 30

正确的答案应该是第一个和第二个,二分序列就是每次的mid值

为什么呢

因为这个二分查找有一个隐藏性质和快速排序类似,就是每一次操作之后,左边小于mid,右边大于mid。

等于的情况得自己定义了

这个性质看似很简单,但是却延申出了用二分做算法题的一个常见方法

红蓝染色法

红蓝染色法

left指针掌管左边蓝色区域,蓝色表示 truej即所求值及其右侧,right指针掌管右边红色区域,红色表示false即所求值左侧,两者互不冲突,通过不断向目标区域靠近,扩大两个指针的掌管区域,直到两者掌管的区域接壤

使用闭区间时,L-1必定是红色即false,R+1必定是蓝色即true,这就是循环不变量

关键不在于区间里的元素具有什么性质,而是区间外面的元素具有什么性质,即将区间外染成红色与蓝色。

根据以上两点,在做题时关键即确定二分条件函数isBlue(),判断是否满足条件,满足条件则right 左移使右侧变蓝 ,不满足条件则left 右移使左侧变红

核心思想就是去查找一个数时,他的左右必然是不满足同一个法则的,有规律1的染红,有规律2的染蓝,交界处即为所求。

LeetCode162. 寻找峰值这道题

public static int findPeakElement(int[] nums) {int left = 0;int right = nums.length - 2; // 初始右边界为倒数第二个元素while (left <= right) {int mid = left + (right - left) / 2; // 防止整数溢出的中间值计算// 比较中间元素和右侧元素if (nums[mid] < nums[mid + 1]) {left = mid + 1; // 峰值在右侧,调整左边界} else {right = mid - 1; // 峰值在左侧或当前元素为峰,调整右边界}}return left; // 最终left指向峰值位置}

这个时候红色的规则是什么

nums[mid] < nums[mid + 1]

蓝色的规则呢

nums[mid] > nums[mid + 1]

这道题还比较简单,下面再看一道,懂了应该就能明白这个办法了

LeetCode33. 搜索旋转排序数组

先找到旋转数组的最小值

即min的位置,然后比较目标值与E的大小

再使用正常的二分搜索

 
public class RotatedBinarySearch {public static int findMin(int[] nums) {int left = 0;int right = nums.length - 2; // 初始右边界为倒数第二个元素while (left <= right) {int mid = left + (right - left) / 2; // 防止溢出的中间值计算// 比较中间元素和最后一个元素if (nums[mid] < nums[nums.length - 1]) {right = mid - 1; // 最小值在左半区} else {left = mid + 1; // 最小值在右半区}}return left; // 返回最小值索引}public static int lowerBound(int[] nums, int left, int right, int target) {int r0 = right; // 保存初始右边界while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] < target) {left = mid + 1; // 目标在右半区} else {right = mid - 1; // 目标在左半区}}// 检查是否越界或未找到if (left == r0 + 1 || nums[left] != target) {return -1;}return left;}public static int search(int[] nums, int target) {int i = findMin(nums);// 根据目标值与末尾元素比较决定搜索区间if (target > nums[nums.length - 1]) {return lowerBound(nums, 0, i - 1, target); // 搜索左半区}return lowerBound(nums, i, nums.length - 1, target); // 搜索右半区}

这里主要说说找最小值的染色

红色:nums[mid] > nums[nums.length - 1]

蓝色:nums[mid] < nums[nums.length - 1]


文章转载自:

http://u1A8hC4g.rbrhj.cn
http://vR3yX90u.rbrhj.cn
http://oaayzGZ9.rbrhj.cn
http://jTupWrtv.rbrhj.cn
http://WEEj6tfo.rbrhj.cn
http://VWZqSqG6.rbrhj.cn
http://DgseYrd0.rbrhj.cn
http://ETj4gzsq.rbrhj.cn
http://Mcu5Crso.rbrhj.cn
http://VieX5xqN.rbrhj.cn
http://IZOkLYMX.rbrhj.cn
http://NI6XckcY.rbrhj.cn
http://oBEdaUj7.rbrhj.cn
http://NNCpOhYh.rbrhj.cn
http://FTT4bU23.rbrhj.cn
http://Qxx7YJdH.rbrhj.cn
http://3m5cZV13.rbrhj.cn
http://NvWdXPu5.rbrhj.cn
http://T0dKgKn5.rbrhj.cn
http://wAWujMxn.rbrhj.cn
http://ve4pii8D.rbrhj.cn
http://kqHx5mDH.rbrhj.cn
http://yldiT6CO.rbrhj.cn
http://GAmX0RGI.rbrhj.cn
http://kjqBBUSo.rbrhj.cn
http://x5ahxdIg.rbrhj.cn
http://y6hEmAVw.rbrhj.cn
http://T15UA73G.rbrhj.cn
http://5MyDXYHx.rbrhj.cn
http://LnMcXnj0.rbrhj.cn
http://www.dtcms.com/wzjs/635702.html

相关文章:

  • 莱州市双语网站wordpress设置导航栏
  • 网站系统维护一般多长时间信息流广告文案
  • 视频网站主持人wordpress升级500
  • 有关网页设计与网站建设的文章创意产品设计说明范文
  • 昌平上门做网站那百度站长工具官网
  • 广东宇晟建设工程有限公司网站程序员做网站给女朋友
  • 网站设计标准字体wordpress卡密支付插件
  • 便民的网站app怎么做店铺设计网站推荐
  • 网站模板哪里下载南京网站开发
  • dedecms一键更新网站流量型网站 cms
  • 简历模板文档京东网站优化
  • 典型的网站开发人员wordpress模板原理
  • 1688网站上自己做模版网站优化要做哪些工作
  • seo网页的基础知识广州新塘网站seo优化
  • 仿素材下载网站源码成都网站制作设计公司
  • 潮州网站推广教程wordpress图片自动存储
  • 门户网站与搜索引擎的区别网站专题制作 公司
  • 专业建设网站技术国家高新技术企业认定申请条件
  • 为什么南极建站在2月微信微网站开发报价
  • 网站建设收费标准精英id导入不了wordpress
  • 济宁嘉祥网站建设郑州做网站推广电
  • 用什么软件做网站原型镇江网站关键词优化
  • 嘉兴网站关键词排名网站群建设进展情况汇报
  • 襄阳网站建设找下拉哥科技达州网站开发
  • 服务器做jsp网站教程视频关键词网站建设价格
  • 白酒网站设计网站设计指南
  • 企业网站模板观叫湖南岚鸿团队专做宠物的网站
  • 北京西站24小时人工服务电话新网域名管理平台
  • 宝塔面板windows建站教程福州seo按天收费
  • wordpress 内容页兰州网站seo优化