JAVA解决山脉数组的峰顶索引问题

JAVA解决山脉数组的峰顶索引问题

01 题目

符合下列属性的数组 arr 称为 山峰数组山脉数组)

  • arr.length >= 3

  • 存在

    i(0 < i < arr.length - 1)使得:
    
    • arr[0] < arr[1] < ... arr[i-1] < arr[i]
    • arr[i] > arr[i+1] > ... > arr[arr.length - 1]

给定由整数组成的山峰数组 arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i ,即山峰顶部。

示例 1:

输入:arr = [0,1,0]
输出:1

示例 2:

输入:arr = [1,3,5,4,2]
输出:2

示例 3:

输入:arr = [0,10,5,2]
输出:1

示例 4:

输入:arr = [3,4,5,1]
输出:2

示例 5:

输入:arr = [24,69,100,99,79,78,67,36,26,19]
输出:2

提示:

  • 3 <= arr.length <= 104
  • 0 <= arr[i] <= 106
  • 题目数据保证 arr 是一个山脉数组

02 知识点

  • 二分查找
  • 数组遍历

03 我的题解

public class erfen01 {public static void main(String[] args) {//测试数据int[] arr= {24,69,100,99,79,78,67,36,26,19};peakIndexInMountainArray(arr);}public static int peakIndexInMountainArray(int[] arr) {
//		由题设得山脉数组的峰值一定不在边缘,所以循环目标不包括边缘int left=1;int right=arr.length-2;
//		res用于记录峰值int res=-1;
//		二分查找是从中间往两边找的,当最右边的数小于最左边时,说明在该范围内没有找到目标while (left<=right) {
//			从中间左边加右边除以2开始找,用减法加的方式防止数组越界int mid=left+(right-left)/2;//由题设可知山脉数组的峰值大于两边,当查找值arr[mid]小于其中一边时,可以移动边界,缩小查找范围if (arr[mid]>arr[mid-1]&&arr[mid]>arr[mid+1]) {res=mid;break;}else if(arr[mid]>arr[mid-1]&&arr[mid]<arr[mid+1]) {left=mid+1;}else {right=mid-1;}}System.out.println(res);return res; }
}

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

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

相关文章

php设计模式之单例(多例),注册器,观察者模式

单例(Singleton)模式和不常见的多例(Multiton)模式控制着应用程序中类的数量。如模式名称&#xff0c;单例只能实例化一次&#xff0c;只有一个对象&#xff0c;多例模式可以多次实例化。 基于Singleton的特性&#xff0c;我们经常用Singleton配置应用程序并定义应用程序中可能…

Oracle小知识总结

1. 每天的8&#xff1a;00到23&#xff1a;00每隔5分钟执行一个sql语句的JOB --建立一个存储过程 CREATE OR REPLACE PROCEDURE p_jobtest IS v_hh VARCHAR2(2); BEGIN v_hh : to_char(SYSDATE, hh24); IF v_hh > 08 AND v_hh < 22 THEN --你的sql语句 NULL; END IF; EN…

使用ArcGIS Server发布我们的数据

原文:使用ArcGIS Server发布我们的数据引言 上一篇我们已经安装好了ArcGIS体系的服务软件&#xff0c;这一篇将介绍如何把我们自己的数据通过ArcGIS Server发布出去&#xff0c;并且能够通过Web页面进行显示和编辑。 发布数据服务 在进行WebGIS开发中&#xff0c;地图显示的内容…

网关的一些知识

什么是网关 &#xff1a; 顾名思义&#xff0c;网关&#xff08;Gateway&#xff09;就是一个网络连接到另一个网络的“关口”。 种类&#xff1a; 按照不同的分类标准&#xff0c;网关也有很多种。TCP/IP协议里的网关是最常用的&#xff0c;在这里我们所讲的“网关”均指TCP/…

ArrayBlockingQueue, LinkedBlockingQueue, ConcurrentLinkedQueue, RingBuffer

1. ArrayBlockingQueue, LinkedBlockingQueue, ConcurrentLinkedQueue ArrayBlockingQueue, LinkedBlockingQueue 继承自 BlockingQueue, 他们的特点就是 Blocking, Blocking 特有的方法就是 take() 和 put(), 这两个方法是阻塞方法, 每当队列容量满的时候, put() 方法就会进入…

ASP.NET Core 中是否有 PostAsJsonAsync() 方法?

咨询区 LP13在 Asp.NET 中我一般都用 PostAsJsonAsync() 做数据提交&#xff0c;在 Asp.NET Core 时代我貌似没有找到&#xff0c;按照程序集的命名规范&#xff0c;我觉得应该也是由 Microsoft.AspNet.WebApi.Client 迁移到 Microsoft.AspNetCore.WebApi.Client 中。回答区 Je…

OSI七层模型的作用

第七层&#xff1a;应用层 数据 用户接口&#xff0c;提供用户程序“接口”。 第六层&#xff1a;表示层 数据 数据的表现形式&#xff0c;特定功能的实现&#xff0c;如数据加密。 第五层&#xff1a;会话层 数据 允许不同机器上的用户之间建立会话关系&#xff0c;如WINDOW…

MyBatis学习总结(17)——Mybatis分页插件PageHelper

2019独角兽企业重金招聘Python工程师标准>>> 如果你也在用Mybatis&#xff0c;建议尝试该分页插件&#xff0c;这一定是最方便使用的分页插件。 分页插件支持任何复杂的单表、多表分页&#xff0c;部分特殊情况请看重要提示。 想要使用分页插件&#xff1f;请看如何…

微信发力了,一键部署网站后端!

大家好&#xff0c;我是鱼皮。还记得么&#xff1f;之前我全程直播带大家从 0 到 1 做了一个包含前端、后端的 表情包网站项目 &#xff0c;支持搜索表情、自由裁切下载、给表情包配字等功能。爸爸表情包网站在线编辑下载但由于各方面的原因&#xff0c;我暂时将该网站战术下线…

数据可视化(9)--数据可视化6步法

在当前互联网&#xff0c;各种数据可视化图表层出不穷&#xff0c;本文尝试对数据可视化的方法进行归纳&#xff0c;整理成6步法。一般的数据图表都可以拆分成最基本的两类元素: 所描述的事物及这个事物的数值&#xff0c;我们暂且将其分别定义为指标和指标值。比如一个性别分布…

数据挖掘在呼叫中心的六大应用点

当前商业正在从“以产品为中心”到“以用户为中心”转变&#xff0c;很多企业将CRM作为企业成功的一个关键因素&#xff0c;呼叫中心作为影响用户最直接的渠道&#xff0c;起着至关重要的作用&#xff1b;利用数据挖掘技术&#xff0c;可以提高企业呼叫中心的效率的同时来增加客…

c++win32项目 如何显示后再删除一个绘图_iMATLAB 绘图扩展函数系列 | 让你绘图更自由(进阶专辑开篇)!...

本专辑参考了mathworks公司主页文件交换站的一些分享文件&#xff0c;遴选部分绘图扩展函数供初学者参考&#xff0c;仅用作学习资料传播&#xff0c;版权属于原作者&#xff0c;特此致谢。如有不妥&#xff0c;请联系删除。本专辑将持续更新&#xff0c;欢迎读者投稿自己绘图函…

HTML5:理解head

2019独角兽企业重金招聘Python工程师标准>>> HTML文档的head部分&#xff0c;通常包括指定页面标题&#xff0c;为搜索引擎提供关于页面本身的信息&#xff0c;加载样式表&#xff0c;以及加载JavaScript文件&#xff08;出于性能考虑&#xff0c;多数时候放在页面底…

Android之什么场景该使用单例模式总结

1、什么是单例模式 单例模式意味着只有一个对象,至于单例模式如何实现就不这里就不多说了,有很多种实现办法。 2、什么时候该使用单例模式?如果不使用单例模式会出现什么问题? 先举2个例子 例子1 当我们做得到最新的短信和最新的通话记录的时候,我们一般采…

Dapr项目应用探索

背景介绍前面文章对Dapr的基本信息进行了学习&#xff0c;接下来尝试将Dapr应用相关应用中。接下来一步步实现应用dapr功能。一、预期效果如上图应用Dapr点包含&#xff1a;a) 报表服务绑定统一数据源服务&#xff1a;接受更新通知  b) 业务系统调用报表操作:采用Dapr方式二、…

为什么当代人越来越不快乐?

全世界只有3.14 % 的人关注了爆炸吧知识小时候哭着哭着就笑了&#xff0c;长大后笑着笑着就哭了。生活不易&#xff0c;成年人叹气&#xff0c;房租水费&#xff0c;学习压力、工作不如意...各种无形的压力&#xff0c;压得人喘不过气。如果一绷得太紧&#xff0c;再坚韧的弦也…

解读C#正则表达式

为什么80%的码农都做不了架构师&#xff1f;>>> 多少年来&#xff0c;许多的编程语言和工具都包含对正则表达式的支持&#xff0c;.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类&#xff0c;而且它们也都与未来的Perl 5中的规则表达式兼…