华为OD机试真题 JavaScript 实现【寻找峰值】【牛客练习题】

在这里插入图片描述

一、题目描述

给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。

1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于;
2.假设 nums[-1] = nums[n] = -\infty−∞;
3.对于所有有效的 i 都有 nums[i] != nums[i + 1];
4.你可以使用O(logN)的时间复杂度实现此问题吗;

二、输入描述

如输入[3,4,2,3,5,6,2]时,会形成两个山峰,一个是索引为1,峰值为4的山峰,另一个是索引为5,峰值为6的山峰。

如下图所示:

在这里插入图片描述

三、输出描述

1

四、解题思路

  1. 读取输入的数组nums;
  2. 获取数组的长度len;
  3. 如果数组长度为1,则直接返回0作为峰值元素的索引;
  4. 如果数组的首元素大于第二个元素,说明首元素即为峰值元素,返回0作为索引;
  5. 如果数组的尾元素大于倒数第二个元素,说明尾元素即为峰值元素,返回len-1作为索引;
  6. 遍历数组的第二个元素到倒数第二个元素(索引范围为1到len-2):
  7. 如果当前元素大于其左右相邻元素,即nums[i] > nums[i-1]且nums[i] > nums[i+1],则当前元素为峰值元素,返回索引i;
  8. 若遍历完数组后仍未找到峰值元素,则返回0作为索引;
  9. 输出峰值元素的索引作为结果;

五、JavaScript算法源码

public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNextLine()){String[] arr=sc.nextLine().split(",");int[] nums = Arrays.asList(arr).stream().mapToInt(Integer::parseInt).toArray();System.out.println(findPeakElement(nums));}
}public static int findPeakElement(int[] nums) {//分析长度为1的情况int len = nums.length;if(len == 1){return 0;}//分析索引为0比1大的情况if(nums[0] > nums[1]){return 0;}//分析倒数第二到倒数第一的情况if(nums[len-1]>nums[len-2]){return len-1;}//分析第二到倒数第二的情况for(int i = 1; i < len-1 ;i++){if(nums[i]>nums[i-1]&nums[i]>nums[i+1]){return i;}}//其余情况返回为0return 0;
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

C语言:数据的存储

往期文章 C语言&#xff1a;初识C语言C语言&#xff1a;分支语句和循环语句C语言&#xff1a;函数C语言&#xff1a;数组C语言&#xff1a;操作符详解C语言&#xff1a;指针详解C语言&#xff1a;结构体 目录 往期文章前言1. 数据的类型2. 整型在内存中的存储2.1 原码、反码、…

不知道识别表格的方式有哪些?分享识别表格怎么弄

小明&#xff1a;嘿&#xff0c;小红&#xff01;你知道吗&#xff1f;最近我在整理一堆纸质表格&#xff0c;但是手动输入数据实在太耗时间了&#xff0c;我在想有没有什么方法可以快速识别表格的内容呢&#xff1f; 小红&#xff1a;哦&#xff0c;我听说过有一些方式可以自…

认识固态继电器及其工作原理

什么是固态继电器&#xff0c;有什么优缺点&#xff1f; 固态继电器 简称SSR&#xff0c;又被称之为“无触点开关”它利用电子元件&#xff08;如双向可控硅等半导体器件&#xff09;的开关特性&#xff0c;可到达无触点无火花地接通和断开电路。 固态继电器工作可靠&#…

大数据开发之Hive案例篇14:某个节点HDFS块比较多

文章目录 一. 问题描述二. 解决方案2.1 查看节点安装的组件2.2 排查HDFS配置2.3 排查Yarn配置2.3.1 首先查看下nodemanager的日志2.3.2 查看container分配情况2.3.3 查看调度机制2.3.4 查看集群任务情况2.3.5 集群负载情况2.3.6 resourcemanager与nodemanager是否可以混合部署 …

【ArcGIS Pro二次开发】(44):属性结构描述表【Excel】转空库(批量)

随着县级国土空间总体规划数据库规范的下发&#xff0c;建立标准空库是一项马上就要着手的工作。国空的数据库体量很大&#xff0c;单是要素类就有100多个&#xff0c;不是以前村规数据库能比的&#xff0c;手动建库是不可能的&#xff0c;工具自动建库就是一个很合理的选择。 …

JavaScript数据存储方式

内置对象 js内部提供的对象&#xff0c;包含各种属性和方法给开发者调用 document.write() console.log() Math Math对象是js提供的一个 “数学”对象&#xff0c;提供了一系列做数学运算的方法 max找最大值Math.max(3,8,5,4) 返回8min找最小值Math.min(3,8,5,4) 返回4ab…

nginx部署本地项目如何让异地公网访问?服务器端口映射配置!

接触过IIS或apache的小伙伴们&#xff0c;对nginx是比较容易理解的&#xff0c;nginx有点类似&#xff0c;又有所差异&#xff0c;在选择使用时根据自己本地应用场景来部署使用即可。通过一些对比可能会更加清楚了解&#xff1a; 1.nginx是轻量级&#xff0c;比apache占用更少…

【Matlab】神经网络遗传算法函数极值寻优——非线性函数求极值

目前关于神经网络遗传算法函数极值寻优——非线性函数求极值的博客资源已经不少了&#xff0c;我看了下来源&#xff0c;最初的应该是来自于Matlab中文论坛&#xff0c;论坛出版的《MATLAB神经网络30个案例分析》第4章就是《神经网络遗传算法函数极值寻优——非线性函数极值寻优…

深入理解浏览器的缓存机制之协商缓存与强缓存

目录 什么是浏览器缓存 浏览器缓存的分类 &#x1f397;️ 强缓存 &#x1f397;️ 协商缓存 &#x1f449;&#x1f3fb; 缓存请求流程 &#x1f449;&#x1f3fb; 为什么要有Etag &#x1f449;&#x1f3fb; 缓存优先级 &#x1f449;&#x1f3fb; 启发式缓存 &a…

DBeaver连接mysql时报错com.mysql.cj.jdbc.Driver的解决方法【修改驱动下载的maven地址和重新下载驱动】

文章目录 说明解决方法1、打开DBeaver点击窗口-->窗口-->首选项-->链接-->点击驱动-->Maven-->添加2、删除已有的驱动3、重新创建mysql链接 说明 网上下载了最新版本的DBeaver软件&#xff0c;但是链接mysql的时候驱动下载失败&#xff0c;所以就报下面错误…

【计算机视觉】DINO

paper&#xff1a;Emerging Properties in Self-Supervised Vision Transformers 源码&#xff1a;https://github.com/facebookresearch/dino 20230627周二目前只把第一部分看完了。 论文导读&#xff1a;DINO -自监督视觉Transformers - deephub的文章 - 知乎 综述类型&a…

LangChain:LLM应用程序开发(上)——Models、Prompt、Parsers、Memory、Chains

文章目录 一、Models、Prompt、Parsers1.1 环境配置&#xff08;导入openai&#xff09;1.2 辅助函数&#xff08;Chat API : OpenAI&#xff09;1.3 使用OpenAI API进行文本翻译1.4使用LangChain进行文本翻译1.5 使用LangChain解析LLM的JSON输出1.5.1 LangChain输出为string格…