山脉数组的峰顶索引 ---- 二分查找

题目链接

题目:

分析:

  • 我们很明显, 可以从峰值位置将数组分成两段, 具有"二段性", 所以可以用二分查找
  • 因为arr是山峰数组, 不存在相等的情况
  • 如果arr[mid] > arr[mid + 1], 说明mid的位置可能是峰值, 移动right = mid
  • 如果arr[mid] < arr[mid + 1], 说明mid的位置一定不是峰值, 移动left = mid + 1
  • 所以可以匹配二分查找中的模版二, 此时,mid = left + (right - left) /2
  • 因为没有等于的情况, 所以模版三也适用:
  • 如果arr[mid] > arr[mid - 1], 说明mid的位置可能是峰值, 移动left = mid
  • 如果arr[mid] < arr[mid - 1], 说明mid的位置一定不是峰值, 移动right = mid - 1
  • 所以可以匹配二分查找中的模版三, 此时,mid = left + (right - left + 1) /2

代码:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神奇的一万

在代码界&#xff0c;有个神奇的存在&#xff0c;它叫一万&#xff1a;eval&#xff08;&#xff09;。 这个神奇的一万&#xff0c;在python和JavaScript中都存在&#xff0c;作用也是基本相同的。 Python中的eval函数能将字符串str当成有效的表达式来求值并返回计算结果。 …

vue contextPath的思考

先说我这边的情况&#xff0c;目前项目都是前后端分离开发的&#xff0c;上线有种部署方式&#xff0c;常见的就是前后端分开部署&#xff0c;这是比较常见的&#xff0c;我这边因客户原因&#xff0c;打包一起进行部署比较简单&#xff0c;交付技术运维部方便后期其他现场部署…

docker ps显示的参数具体是什么意思

1&#xff0c;运行一个容器 docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"这段命令的作用是使用 docker run 命令运行一个基于 ubuntu:15.10 镜像的 Docker 容器&#xff0c;并在容器中执行一个无限循环的命令。 具体解…

10Django项目--用户管理系统--改

对应视频链接点击直达 10Django项目--用户管理系统--改 对应视频链接点击直达改a&#xff0c;本质b&#xff0c;修改(更新) 页面相关a&#xff0c;index页面新增操作按钮b&#xff0c;修改(更新)页面c&#xff0c;路由和函数 OVER&#xff0c;不会有人不会吧不会的加Q139400651…

基于jeecgboot-vue3的Flowable流程-我的任务(一)

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、首先可以用现成生成代码的前端来做这个&#xff0c;只要做一些调整就可以了&#xff0c;这样利用现有的一些模板可以快速构建我的任务&#xff0c;否则vue2与vue3相差太大&#xff0c;移…

质量人,你还在等什么?快来六西格玛培训公司充电吧!——张驰咨询

在竞争激烈的商业环境中&#xff0c;质量成为了企业生存和发展的关键。而六西格玛&#xff0c;作为一种全球公认的质量管理方法论&#xff0c;正在成为越来越多企业追求品质革命的重要工具。而六西格玛培训公司&#xff0c;则成为了这场品质革命中&#xff0c;质量人不可或缺的…

菊花链通信技术整理

目录 一、菊花链简介 二、菊花链与CAN通信的区别 三、常见的菊花链AFE芯片 四、菊花链数据结构 五、菊花链方案介绍 一、菊花链简介 首先简单的说一下菊花链以及菊花链的应用&#xff0c;在目前国内的BMS开发中&#xff0c;我们应用最广泛的目前还还是分布式&#xff0c;…

Linux:线程

文章目录 前言1. 线程概念1.1 什么是线程1.2 线程比进程更加轻量化1.3 虚拟地址到物理地址的转化物理内存的管理页表 1.4 线程的优点1.5 线程的缺点1.6 线程异常1.7 线程用途 2. 进程 vs 线程3. 线程控制3.1 线程创建3.2 线程退出3.3 线程等待3.4 分离线程3.5 线程取消 4. 线程…

机器学习-6-对随机梯度下降算法SGD的理解

参考一文带您了解随机梯度下降(Stochastic Gradient Descent):python代码示例 参考sklearn-SGDClassifier 1 梯度下降 在机器学习领域,梯度下降扮演着至关重要的角色。梯度下降是一种优化算法,通过迭代沿着由梯度定义的最陡下降方向,以最小化函数。类似于图中的场景,可以…

english语法

从句&#xff1a;简单句连词 介词

Android studio sdk 虚拟机无法打开运行

1.确认是否在BIOS开启硬件虚拟化支持,选择Enable 2.win8/win10 Hyper-V冲突。控制面板-》程序与功能-》windows功能-》关闭 Hyper-V 3.sdk 路径非默认路径 复制avd C:\Users\Administrator\.android\avd 到 sdk的安装路径下 D:\Android\sdk 。重启软件重新启动即可

老板:2个亿的销售额,利润只有55万!电商这个生意真的到头了?

近来&#xff0c;一段对话轰动了半个电商圈的老板&#xff0c;干拼多多&#xff0c;2亿的销售额&#xff0c;利润只有55万&#xff01; 其实造成这一现象的原因就是“内卷” 说一句电商行业真实的现状&#xff0c;电商发展了十几年&#xff0c;网友对网购已经完全熟悉&#x…

DuGa-DIT论文翻译

Dual Gated Graph Attention Networks with Dynamic Iterative Training for Cross-Lingual Entity Alignment 双门控图注意力网络与跨语言实体对齐的动态迭代训练 Abstract 近年来&#xff0c;跨语言实体对齐引起了相当大的关注。过去使用传统方法来匹配实体的研究都有一个…

Linux--构建进程池

目录 1.进程池 1.1.我们先完成第一步&#xff0c;创建子进程和信道 1.2. 通过channel控制&#xff0c;发送任务 1.3回收管道和子进程 1.4进行测试 1.5完整代码 1.进程池 进程池其产生原因主要是为了优化大量任务需要多进程完成时频繁创建和删除进程所带来的资源消耗&#…

CentOS7 部署单机版 ElasticSearch + Logstash

一、部署ElasticSearch Elasticsearch部署参考下面文章&#xff1a; CentOS7 部署单机版 elasticsearch-CSDN博客文章浏览阅读285次&#xff0c;点赞6次&#xff0c;收藏3次。ElasticSearch&#xff0c;用于检索、聚合分析和大数据存储https://blog.csdn.net/weixin_44295677…

后端经典三层架构

大家好&#xff0c;这里是教授.F 引入&#xff1a; MVC 全称∶ Model 模型、View 视图、 Controller 控制器。MVC 最早出现在 JavaEE 三层中的 Web 层&#xff0c;它可以有效的指导WEB 层的代码如何有效分离&#xff0c;单独工作。 View 视图∶只负责数据和界面的显示&#…

拼多多买家关注店铺 id 导出商品收藏导出查看全店spu_id

拼多多买家账号导出关注列表店铺 id、商品 id 登录网页端拼多多界面&#xff0c;清缓存后 F12加载数据&#xff0c;下滑界面自动加载缓存&#xff1b; 查看商品收藏 登录网页端拼多多界面&#xff0c;清缓存后 F12加载数据&#xff0c;下滑界面自动加载缓存&#xff1b; 一…

【招聘帖】资深数通专家 ,薪资最高3.5W

资深数通专家 薪资&#xff1a;25000-35000 元/月 工作职责 岗位职责&#xff1a; 1、负责统筹管理客户全网问题&需求跟踪管理及汇报、日常数通团队工作的每日分解协调、人员技能内训及跟踪闭环&#xff1b; 2、负责统筹对架构基线梳理评估、软件版本管理、应急方案可执行…

Git-01

Git是一个免费且开源的分布式版本控制系统&#xff0c;它可以跟踪文件的修改、记录变更的历史&#xff0c;并且在多人协作开发中提供了强大的工具和功能。 Git最初是由Linus Torvalds开发的&#xff0c;用于Linux内核的开发&#xff0c;现在已经成为了广泛使用的版本控制系统&a…

拉普拉斯IPO:新能源产业快速发展,为低碳转型注入强劲动力

近年来&#xff0c;我国新能源产业快速发展&#xff0c;为全球绿色低碳转型注入强劲动力。国际人士认为&#xff0c;中国新能源产业快速发展&#xff0c;得益于超大规模市场优势、完整的工业体系和丰富的人力资源&#xff0c;得益于企业对研发创新的巨大投入&#xff0c;我国市…