#yyds干货盘点# 面试必刷TOP101:寻找峰值

网友投稿 797 2022-10-20

#yyds干货盘点# 面试必刷TOP101:寻找峰值

#yyds干货盘点# 面试必刷TOP101:寻找峰值

1.简述:

描述

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

1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于

3.对于所有有效的 i 都有 nums[i] != nums[i + 1]

4.你可以使用O(logN)的时间复杂度实现此问题吗?

数据范围:

如输入[2,4,1,2,7,8,4]时,会形成两个山峰,一个是索引为1,峰值为4的山峰,另一个是索引为5,峰值为8的山峰,如下图所示:

示例1

输入:

[2,4,1,2,7,8,4]

返回值:

1

复制

说明:

4和8都是峰值元素,返回4的索引1或者8的索引5都可以

示例2

输入:

[1,2,3,1]

返回值:

2

说明:

3 是峰值元素,返回其索引 2

2.代码实现:

import java.util.*;public class Solution { public int findPeakElement (int[] nums) { int left = 0; int right = nums.length - 1; //二分法 while(left < right){ int mid = (left + right) / 2; //右边是往下,不一定有坡峰 if(nums[mid] > nums[mid + 1]) right = mid; //右边是往上,一定能找到波峰 else left = mid + 1; } //其中一个波峰 return right; }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:speech-to-text 基准测试框架
下一篇:limdu - Node.js的机器学习框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~