leecode162 寻找峰值

Leetcode 162:寻找峰值(最详细的解法!!!) 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞。 示例 1: 输入: nums = [1,2,3,1] 输出: 2 解释: 3 是峰值元素,你的函数应该返回其索引 2。 示例 ... 阅读详情

在这里插入图片描述

我的思路

思路1

这个题目非常简单,直接排序,然后找出最大值,最大值一定是峰值,这样就结束了。

但是这样的话空间复杂度是O(n),时间复杂度是O(nlogn)+O(n),时间空间复杂度都很高

int[] arr = nums.clone();
Arrays.sort(nums);
int n= nums[nums.length-1];
for(int i=0;i<arr.length;i++){
    if(arr[i]==n){
        return i;
    }
}
return -1;

思路2

排除特殊情况之后,一个for循环就可以解决问题

当然也可以把这个特殊情况放到循环里面进行判断,但是我感觉没必要

public int findPeakElement(int[] nums) {
    int n = nums.length;
    if(n==1){
        return 0;
    }
    if(nums[0]>nums[1]){
        return 0;
    }
    if(nums[n-1]>nums[n-2]){
        return n-1;
    }
    for(int i =1;i<n-1;i++){
        if(nums[i]>nums[i-1]&&nums[i]>nums[i+1]){
            return i;
        }
    }
    return -1;
}

灵神思路

这个题是让设计了这个时间复杂度为 O(log n) 的算法来解决此问题。我在思路二中取巧了,思路2中是暴力破解的,只不过刚好时间上达标了而已

这个题可以采用二分查找算法,虽然这个题目并非是有序数组,但仍然可以用二分排序算法。我们要查找的不是一个具体的值,而是一个满足条件的值。

将middle处的元素与middle+1的位置元素进行相比,如果nums[middle]<nums[middle+1],那么肯定在下标 [middle+1,n−1] 中一定存在峰值。这一点比较难理解,用反正法证明这个

  • 假设下标 [middle+1,n−1] 中没有峰值

    • 那么nums[middle+1]就不是峰值了,则这个nums[middle+2]肯定要大于nums[middle+1],不然的话这个nums[middle+1]就是峰值了,因为nums[middle]<nums[middle+1]>nums[middle+2]

    • 以此类推,如果 [middle+1,n−1] 中没有峰值,那么这个区间内的元素肯定是递增的。但是如果递增的话

      • nums[n-2]<nums[n-1]>负无穷
      • 则nums[n-1] 肯定是峰值。假设失败
public int findPeakElement(int[] nums) {
    int left = -1;
    int right = nums.length-1;
    while(left+1<right){
        int mid = left+(right-left)/2;
        if(nums[mid]<nums[mid+1]){
            left=mid;
        }else {
            right= mid;
        }
    }
    return right;
}
多模态数据集对比:MicroLens、PixelRec和Amazon在电商推荐中的表现差异 本文深入对比了三大主流多模态数据集MicroLens、PixelRec和Amazon在电商推荐中的表现差异。通过实际测试数据,分析了这些数据集在冷启动处理、模态融合、稀疏性挑战等关键场景下的真实表现,为算法工程师和研究员提供实用指南。特别关注多模态数据集的选择对推荐系统效果的影响,帮助开发者优化模型性能。 阅读详情

相关推荐

SOLIDWORKS Flow Simulation 颗粒分离器仿真:从流场分析到分离效率优化

计算流体力学(CFD)是研究流体流动、传热及相关物理现象的核心工具,其基本原理是通过数值方法求解控制流体运动的纳维-斯托克斯方程。在工程实践中,CFD的价值在于能够对复杂流动进行高保真度仿真,从而在产品设计阶段预测性能、优化结构,显著降低物理样机的试制成本和周期。颗粒分离器作为环保、化工、矿业等领域的关键设备,其设计核心在于平衡分离效率与压力损失。借助SOLIDWORKS内嵌的Flow Simulation模块,工程师可以高效地执行流体仿真,特别是对涉及离散相的颗粒运动进行轨迹追踪和效率统计。该技术方案通过

weixin_28709649的博客 322

Leecode刷题笔记——162. 寻找峰值

思路如下: logN的时间复杂度,可以考虑采用二分法,不断逼近峰值对应下标。 比较nums[mid]与nums[mid+1]的大小,如果前者小于后者,则mid的右边一定存在峰值;如果前者大于后者,则mid左边一定存在峰值。 class Solution { public int findPeakElement(int[] nums) { //边界条件 i...

Tyxxxxxx 186

STM32 HAL库下DHT22高精度温湿度采集与30秒定时实现

单总线传感器(如DHT22)是嵌入式环境监测系统的核心数据源,其通信依赖微秒级精确时序控制。在STM32平台中,需结合硬件定时器(如TIM2)构建稳定周期触发机制,并通过GPIO+精确延时(非HAL_Delay)完成协议解析。该方案突破整数读取局限,完整还原带一位小数的温度与湿度值,显著提升工业级数据精度。典型应用于物联网终端、智能农业节点及边缘侧环境监控系统,为MQTT/CoAP等协议上报提供结构化原始数据支撑。本实践基于STM32F103与HAL库,不依赖第三方驱动,具备强可移植性与工程鲁棒性。

weixin_42453228的博客 513

Java实现 LeetCode 162 寻找峰值

162. 寻找峰值 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞。 示例 1: 输入: nums = [1,2,3,1] 输出: 2 解释: 3 是峰值元素,你的函数应该返回其...

南 墙 1万+

ADS交叉耦合振荡器VCO相位噪声优化仿真实践

本文详细介绍了在ADS软件中搭建和优化交叉耦合VCO相位噪声的完整仿真实践。通过谐波平衡与瞬态仿真分析电路性能,并重点阐述了通过提升谐振腔Q值、优化晶体管工作点及改善尾电流源来有效降低相位噪声的具体方法,为射频电路设计提供了实用指南。

weixin_29235923的博客 633

使用VNC可视化Docker容器

Docker容器可视化

Robert_Q的博客 1万+

LeetCode-162. 寻找峰值 Python3版本

162.寻找峰值 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组nums,其中nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设nums[-1] = nums[n] = -∞。 示例 1: 输入: nums = [1,2,3,1] 输出: 2 解释: 3 是峰值元素,你...

章小幽的博客 478

【入门AUTOSAR网络管理测试】CANoe测试T_WakeUp时间

随着智能电动汽车行业的快速发展,目前AUTOSAR网络管理也得到了广泛应用,AUTOSAR网络管理测试也是汽车网络测试中非常重要的环节,NM问题导致的汽车ECU不能唤醒、电瓶亏电等问题,对于新入门AUTOSAR网络管理测试的同学不清楚如何开展测试,那么本章节就主要给大家介绍网络管理中T_WakeUp时间如何测试。【入门AUTOSAR网络管理测试】AUTOSAR网络管理规范需求解读。

测试领域技术分享 2135

力扣 LeetCode 162. 寻找峰值

题目要求返回任意一个峰值即可。

qq_61504864的博客 377

AMDGPU SVM VRAM Migration 实现详解

AMD正在基于DRM SVM框架重构SVM实现,该框架即将广泛应用。本文分析了AMD开发者提交的POC验证版本的技术方案。该架构分为三层:AMDGPU SVM映射层、DRM Pagemap通用框架层和AMDGPU迁移后端硬件驱动层。系统涉及三个地址空间转换:VRAM分配器空间、HPA/PFN空间和GPU PTE地址空间。关键数据结构包括设备级迁移基础设施amdgpu_pagemap、迁移临时BO包装器amdgpu_svm_bo等。该方案通过地址空间转换实现VRAM迁移功能,目前仍处于POC阶段,设计可能变更

图形/计算GPU的驱动与虚拟化技术分享园地 863

ESP32-CAM 赋能 AI 视觉巡检小车:自主避障与目标追踪实现全解析

本文基于 ESP32-CAM 实现了低成本 AI 视觉巡检小车的核心功能,硬件成本<100 元,兼顾自主避障与目标追踪。算法升级:移植 YOLOv5nano 量化模型(INT8),提升目标检测精度(如识别巡检场景中的 “异常物体”“人员”);无线拓展:通过 MQTT 协议将巡检图像、距离数据上传到阿里云 / 腾讯云,实现远程监控;多传感器融合:增加温湿度(DHT11)、红外测温(MLX90614)模块,扩展巡检维度;路径规划:结合 SLAM 算法,实现自主建图与路径巡检。

weixin_42300449的博客 368

【LeetCode】162. 寻找峰值(JAVA)

原题地址:https://leetcode-cn.com/problems/find-peak-element/ 题目描述: 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设 nums[-1] = nums[n] = ...

rabbitsockx的博客 252

如何懂固高卡以及滚筒轴+平移轴配合运动?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 846

【LeetCode】162. 寻找峰值(Java)

峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞。 说明: 你的解法应该是 O(logN) 时间复杂度的。(即不能单纯的遍历数组,基本就是二分了) class Solution { public int findPeakElement(int[] nums) { //

小楊同学的笔记本 382

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LeetCode题解:寻找峰值

本文是二分查找-模版 II 的第二题,你可能意识到了,相对应的 leetcode 给他们标出中等的难度,加油!

余光的博客 5230

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

深入解析力扣162题:寻找峰值(线性扫描与二分查找详解)

本文详细解读了力扣第162题“寻找峰值”,通过线性扫描法和二分查找法两种方法,高效地解决了这一问题。希望读者通过本文的学习,能够在力扣刷题的过程中更加得心应手。

10年数据\经营分析经验,现任大厂数据分析负责人 1232

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LeetCode第162题_寻找峰值

峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回所在位置即可。你可以假设,并且对于所有有效的i都有。换句话说,相邻元素的值都不相等。你必须实现时间复杂度为O(log n)的算法来解决此问题。

qq_40263592的博客 881

Leetcode162 寻找峰值,C++,Java,Python

Leetcode162 寻找峰值 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-peak-element/ 博主Github:https://github.com/GDUT-Rp/LeetCode 题目: 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元...

Rp的博客 698

Leetcode 162. 寻找峰值 C++

Leetcode 162. 寻找峰值 题目 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 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]

weixin_43750513的博客 323

C++&Python描述 LeetCode 162.寻找峰值

C++&Python描述 LeetCode 162.寻找峰值   大家好,我是亓官劼(qí guān jié ),在公众号、优快云、GitHub、B站、华为开发者论坛等平台分享一些技术博文,全平台的id皆为:亓官劼(qí guān jié ),除以上平台,其他的亓官劼id都不是本人,有不少网站在冒充,注意甄别。 放弃不难,但坚持一定很酷!时光荏苒,未来可期,一起加油~   建了个小交流群,Q群:545611263,要进微信群的话可以加我V:qiguanjie2015备注拉群即可。近期对博文更新策

一起加油 950

LeetCode、162. 寻找峰值【中等,最大值、二分】

题目:峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞ 。 你必须实现时间复杂度为 O(log n) 的算法来解决此问题。

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 1198

【leetcode】162. 寻找峰值

.峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-peak-e...

Gin.TaMa的博客 198

LeetCode-162、寻找峰值-中等

LeetCode-162、寻找峰值-中等 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设nums[-1] = nums[n] = -∞。 示例 1: 输入: nums = [1,2,3,1] 输出: 2 解释: ...

clover_my的博客 169

二分查找学习笔记(三):寻找峰值,寻找峰值II

前两期有详细解释,后面题目是这个的变形(统一使用“前闭后闭”的写法方便理解)

学习记录 1710

LeetCode162. 寻找峰值

LeetCode162. 寻找峰值 峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞ 。 你必须实现时间复杂度为 O(log n) 的算法来解决此问题。 示例 1: 输入:nums = [1,2,3,1] 输出:2 解释:3 是峰值元素,你的函数应该返回其索引 2。 示例 2: 输入:nums = [1,2,1,3,5,6,4]

yikeshouliudan的博客 327

leetcode 算法-寻找峰值-162

leetcode 算法-寻找峰值 leetcode 传送门 题目 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞。 示例 1: 输入: nums = [1,2,3,1] 输出: ...

u011622021的博客 1300
上一篇: Transformer模型实战篇
下一篇: leecode153 寻找排序元素中的最小值
TranquilGlow
博客等级 码龄5年 132粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值