【二分查找-简单】剑指 Offer II 069. 山峰数组的顶部

剑指 Offer II 069. 山峰数组的顶部 的解决方案,你可以设计一个。给定由整数组成的山峰数组。很容易想到时间复杂度。 阅读详情

【题目】
符合下列属性的数组 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 是一个山脉数组

进阶:很容易想到时间复杂度 O(n) 的解决方案,你可以设计一个 O(log(n)) 的解决方案吗?

注意:本题与主站 852 题相同

【代码】
在这里插入图片描述

class Solution:
    def peakIndexInMountainArray(self, arr: List[int]) -> int:
        peak=-1
        sz=len(arr)
        for i in range(1,sz):
            if arr[i]<arr[i-1]:
                return i-1
        return peak

【二分查找法】
在这里插入图片描述

class Solution:
    def peakIndexInMountainArray(self, arr: List[int]) -> int:
        n = len(arr)
        l = 1
        r = n - 2
        while l <= r:
            mid = (l + r) // 2
            if arr[mid - 1] < arr[mid] > arr[mid + 1]:
                return mid
            elif arr[mid - 1] < arr[mid]:
                l = mid + 1
            elif arr[mid] > arr[mid + 1]:
                r = mid - 1
手把手教你学Simulink——基于Simulink的多轮PMSM同步驱动交叉耦合控制 摘要:本文针对多轮PMSM同步驱动系统的负载不均、参数差异等问题,提出基于Simulink的交叉耦合控制解决方案。通过实时补偿轮间同步误差,实现同步误差<1%、转矩脉动<5%的性能提升。文章详细介绍了系统架构、核心算法(包括PMSM数学模型和偏差耦合控制算法)、Simulink建模步骤及参数设置,并通过仿真验证了稳态和动态性能。同时提供了工程调试建议和完整代码实现,为多轮驱动系统开发提供实用参考。该方案计算量小,可移植性强,适用于电动汽车、AGV等应用场景。 阅读详情

相关推荐

【EPICS学习记录】根据官方教程创建一个IOC应用

参照官网给出的IOC创建教程逐步操作完成了一个IOC应用的创建,官网教程中有部分过程表述的不清晰,自己摸索之后完成了IOC的创建,并把流程记录下来。其中有一些操作不是很理解,有问题或者建议欢迎指正。

yifeng_H的博客 3661

【LeetCode】剑指 Offer II 069. 山峰数组的顶部(C++)

剑指 Offer II 069. 山峰数组的顶部1 题目描述2 示例描述2.1 示例12.2 示例22.3 示例32.4 示例42.5 示例53 解题提示4 解题思路5 代码详解 1 题目描述 符合下列属性的数组 arr 称为 山峰数组(山脉数组) : arr.length >= 3 存在 i(0 < i < arr.length - 1)使得: arr[0] < arr[1] < … arr[i-1] < arr[i] arr[i] > arr[i+1] &gt

敲代码两年半的练习生博客 439

雷电模拟器+Python 3.11:手把手教你用Frida-dexdump给安卓APK脱壳(附GDA查壳)

本文详细介绍了如何使用雷电模拟器和Python 3.11配合Frida-dexdump工具进行安卓APK脱壳的全流程。从环境配置、工具安装到脱壳操作和问题排查,提供了包含30+关键截图的保姆级教程,适合零基础用户快速上手。重点讲解了Frida工具链的使用技巧和GDA查壳方法,帮助读者掌握移动应用安全分析的基础技能。

weixin_42568801的博客 329

山峰数组的顶部

class Solution { public int peakIndexInMountainArray(int[] nums) { //首先把山峰数组中的数分为三种,第一种位于山峰之前,它总是比它的前一个数要大,第二种就是位于山峰之后的数它总是比它前面的数要小,而第三种就是我们所要寻找的山峰它比它左右两边的数都要大 //通过以上的特点我们采取二分策略来寻找山峰 //首先需要确定寻找的开始课结束位置left和right,由于第一个数字和最后一个数字不可

guiguchunqiu的博客 619

用AI画电路板AI EDA初探Creating WiFi Radio with CELUS: A Step-by-Step Tutorial 使用CELU.IO创建WiFi收音机:分步教程

结论:整体还不太成熟,所选器件单元是欧美思维,器件选型成本和咱们华强北还是无法比。可以关注迭代,看客就当走马观花就行了;不过里面的单元模块还带有AI提问的这个比较好,值得国内EDA从业者学习。话不多说上正文:本教程目的是让我们深入了解如何使用CELUS设计平台构建WiFi收音机实战项目。本指南的重点是使用该平台来选择正确的解决方案,并整合一个项目,让您可以将音乐和节目从互联网直接传输到您自己构建的扬声器。

2301_81235726的博客 1万+

超声波雾化驱动设计:专用芯片FM8118替代MCU的工程实践

超声波雾化是一种基于压电陶瓷谐振原理的高频能量转换技术,其核心在于在1.6–2.4MHz频段精准激励雾化片以实现高效水分子破碎。传统采用通用MCU配合分立MOSFET的方案受限于PWM频率上限、栅极驱动能力不足及EMI控制困难,导致雾化效率低、温升高、可靠性差。专用雾化芯片(如FM8118)通过集成2.1MHz振荡器、零电压开关(ZVS)控制与过流/过热双重保护,从架构层面解决高频功率驱动的本质约束,显著提升驱动效率(达83.7%)与系统鲁棒性。该技术广泛适用于桌面加湿器、医疗雾化器、农业微喷等对体积、功耗

weixin_34620658的博客 408

剑指offer69:山峰数组的顶部

题目: 符合下列属性的数组 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] &lt

L的博客 429

计算机毕业设计springboot基于微信平台的二次元手办商场小程序【附源码】

选题背景: 随着二次元文化的兴起和普及,越来越多的人开始对二次元角色产生了浓厚的兴趣和喜爱。手办作为二次元文化的重要载体之一,成为了许多二次元爱好者收藏和展示的对象。然而,在传统的线下手办商场中,消费者往往面临着时间、空间和选择的限制。因此,基于微信平台的二次元手办商场小程序应运而生。 选题意义: 首先,基于微信平台的二次元手办商场小程序能够打破地域限制,使得用户可以随时随地通过手机进行购物。无论是在家中、上班途中还是旅行中,用户都能够方便地浏览和购买自己喜欢的手办,极大地提高了购物的便利性和灵活性。

拉期程序 452

剑指 Offer II 069. 山峰数组的顶部(简单 二分查找 数组)

剑指 Offer II 069. 山峰数组的顶部 符合下列属性的数组 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]

weixin_43942435的博客 341

WRFDA如何读取风云四号A 星的GIIRS数据?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1031

uniapp - 实现苹果App打包上架App Store应用商店详细教程,详解Hbuilder打包编译ipa发布上传到苹果ios软件商店全流程,提供云打包/离线本地打包ios、申请IOS苹果证书方法

uni-app,苹果ios,苹果app,打包编译,appstore应用商店,ipa发布到软件商店,uniapp的app苹果应用商店上架,上架苹果APPStore,uniApp打包的ipa文件上传到商店,上架苹果商城,审核失败,被拒绝,UniApp打包ipa文件,上架iOSAppStore流程指南,最新详细教程最全,Hbuilder打包发布iosapp,苹果云打包上线全过程,云打包IPA并上传到商店,打包iOSipa文件后怎么发布到应用商店,苹果证书申请教程,ios证书申请,mac电脑,审核很久

🏆 前端领域优质创作者 1万+

面试算法69:山峰数组的顶部

在一个长度大于或等于3的数组中,任意相邻的两个数字都不相等。该数组的前若干数字是递增的,之后的数字是递减的,因此它的值看起来像一座山峰。请找出山峰顶部,即数组中最大值的位置。例如,在数组[1,3,5,4,2]中,最大值是5,输出它在数组中的下标2。

Winn~ 890

YOLOv12 改进 | Backbone改进 3

将CSP中的简单拼接改为可学习的特征选择门控,动态决定哪些特征流向下一层,同样再写这篇。:相比静态CSP的固定50/50分割,门控机制可学习0.3:0.7等最优比例。在输入端加入轻量SR模块,对下采样后的特征进行超分恢复,提升小目标检测能力。(小目标): 从 0.51 AP → 0.63 AP (+24%):采用ESPCN的高效亚像素卷积,避免传统插值的信息损失。:从通道级(SE)到空间级(Spatial)的多粒度控制。:结合浅层细节和深层语义,恢复小目标的纹理信息。

u012133341的博客 842

LeetCode 剑指 Offer II 二分查找 专题总结

剑指 Offer || 刷穿刷穿刷穿!!!

一只小逸白 2206

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

剑指 Offer II 069「山峰数组的顶部」:基于二分查找的 O(log n) 峰顶定位实战解析

本篇技术指南以 LeetCode《剑指 Offer(专项突击版)》系列第 069 题「山峰数组的顶部」为核心,完整讲解山峰数组的数学定义、边界约束与进阶要求,并深入剖析仓库中 Python、Java、C++、Go、JavaScript、Swift 等多语言二分查找实现,说明如何利用"先严格递增、后严格递减"的单峰性质将时间复杂度从 O(n) 优化到 O(log n)。读完本文,你将掌握一类"在单峰

gitblog_00259的博客 428

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LeetCode 剑指 Offer II 069. 山峰数组的顶部

LeetCode 剑指 Offer II 069. 山峰数组的顶部 文章目录题目描述一、解题关键词二、解题报告1.思路分析2.时间复杂度3.代码示例2.知识点总结 题目描述 符合下列属性的数组 arr 称为 山峰数组(山脉数组) : arr.length >= 3 存在 i(0 < i < arr.length - 1)使得: arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] &g

Datao_csdn的博客 737

10-14每日一题:剑指 Offer II 069. 山峰数组的顶部

剑指 Offer II 069. 山峰数组的顶部 思路:二分查找 本题无法根据左右两区间大小划分左右区间,但是可以通过左右区间不同性质得到二段性,左半边区间满足单调递增,但是有半边不满足单调递增,反之也成立 class Solution { public: int peakIndexInMountainArray(vector<int>& arr) { int l = 1, r = arr.size() - 1; while (l < r)

释然的成长之路 147

解题报告 - 剑指 Offer II 069. 山峰数组的顶部

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

Datao_csdn的博客 618

LeetCode 剑指 Offer II 069. 山峰数组的顶部(三分) / 38. 外观数列 / 282. 给表达式添加运算符

剑指 Offer II 069. 山峰数组的顶部 2021.10.14 每日一题 题目描述 符合下列属性的数组 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 ,返回任

windyjcy的博客 161

#力扣LeetCode剑指 Offer II 069. 山峰数组的顶部 @FDDLC

题目描述: 剑指 Offer II 069. 山峰数组的顶部 - 力扣(LeetCode) (leetcode-cn.com) Java代码: class Solution { public int peakIndexInMountainArray(int[] a) { int l=0,r=a.length-1; for(int m=(l+r)/2;l<r;m=(l+r)/2){ if(a[m]<a[m+1])l=m+1

LiuXingchang的博客 458

LeetCode:剑指 Offer II 069. 山峰数组的顶部————简单

题目 剑指 Offer II 069. 山峰数组的顶部 符合下列属性的数组 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[

Kinght_123的博客 352
上一篇: 【数组-简单】1920. 基于排列构建数组
下一篇: 【树-简单】559. N 叉树的最大深度
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值