leetcode-峰值检测
2024-09-13 16:59:06
寻找峰值
峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 nums
,其中 nums[i] ≠ nums[i+1]
,找到峰值元素并返回其索引。
数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞
。
示例 1:
输入: nums =[1,2,3,1]
输出: 2
解释: 3 是峰值元素,你的函数应该返回其索引 2。
示例 2:
输入: nums =[
1,2,1,3,5,6,4]
输出: 1 或 5
解释: 你的函数可以返回索引 1,其峰值元素为 2;
或者返回索引 5, 其峰值元素为 6。
说明:
你的解法应该是 O(logN) 时间复杂度的。
二分查找
class Solution {
public int findPeakElement(int[] nums) {
if(nums.length==0)return 0;
int l=0,r=nums.length-1;
//中间元素比mid+1大,那么峰值在Mid的左边,同时中间元素可以取到峰值。如果比mid+1更小,那么峰值一定在Mid右边且取不到mid。
while(l<=r){
if(l==r)return l; //左右相遇作为结束条件
int mid=(l+r)/2;
if(nums[mid]>=nums[mid+1])r=mid; //取mid+1可以避免检测
else l=mid+1;
}
return -1;
}
}
寻找峰值
峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 nums
,其中 nums[i] ≠ nums[i+1]
,找到峰值元素并返回其索引。
数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞
。
示例 1:
输入: nums =[1,2,3,1]
输出: 2
解释: 3 是峰值元素,你的函数应该返回其索引 2。
示例 2:
输入: nums =[
1,2,1,3,5,6,4]
输出: 1 或 5
解释: 你的函数可以返回索引 1,其峰值元素为 2;
或者返回索引 5, 其峰值元素为 6。
说明:
你的解法应该是 O(logN) 时间复杂度的。
最新文章
- HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- [开源]用MQL4实现MD5加密
- jdk环境配置
- HTML流动布局各种宽度自适应
- ubifs核心功能 -- 垃圾回收
- 树的prufer编码
- Codeforces Round #259 (Div. 2) C - Little Pony and Expected Maximum (数学期望)
- Who needs an architect?---Martin Fowler
- 开源的Android开发框架-------PowerFramework使用心得(三)内置浏览器BrowserActivity
- mybatis dao无实现类的配置
- 百度地图 api 功能封装类 (ZMap.js) 本地搜索,范围查找实例
- CoreJavaE10V1P3.1 第3章 Java的基本编程结构-3.1 Java 最简程序
- GridView 翻页 索引超出范围
- objective-c中类似ruby枚举类的实例方法
- MySQL 字符集和校对
- 旧调重弹Hibernate与Ibatis区别——深入架构设计
- homestead安装
- hibernate 的sum(filed)引发的NullPointException错误解决过程
- [LeetCode&;Python] Problem 788. Rotated Digits
- win10 解决 WMI Provider Host 占用CPU过高问题