日拱一卒(16)——leetcode学习记录:山脉数组峰值索引

一、题目

给定一个长度为 n 的整数 山脉 数组 arr ,其中的值递增到一个 峰值元素 然后递减。

返回峰值元素的下标。

你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。

二、分析

要求是O(log(n))的时间复杂度,那么应该采用二分法。具体是找到最大的元素的一半,直至找到峰顶元素。这里实现的细节值得推敲,包括终止条件、判断条件的设置。

O(log(n))的时间复杂度的理解,假设k次二分后范围缩小到1,那么n/2^k = 1,可以求解k是log2(n)

三、题解

class Solution:

def peakIndexInMountainArray(self, arr: Listint) -> int:

left,right = 0,len(arr)-1

while left+1 < right:

mid = (left+right)//2

if arrmid < arrmid+1:

left = mid

else:

right = mid

return right

相关推荐
晓py1 分钟前
Windows 本地挂载阿里云 ECS,并使用 Claude 操作挂载路径学习文档
windows·学习·阿里云
babe小鑫1 分钟前
2026工商管理专业学习数据分析的价值分析
学习·数据挖掘·数据分析
CC数学建模7 分钟前
2026年第十六届APMCM 亚太地区大学生数学建模竞赛(中文赛项)赛题B题:高性能芯片热管理系统的优化问题完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
爱睡懒觉的焦糖玛奇朵16 分钟前
【视觉检测之人员奔跑检测算法开发思路】
人工智能·python·深度学习·算法·yolo·视觉检测
05候补工程师21 分钟前
【408考研复习】数据结构核心笔记:字符串模式匹配与内部排序算法全解析
数据结构·经验分享·笔记·考研·算法·排序算法
阿文的代码库24 分钟前
浅谈:无向图的欧拉回路
算法
-Thinker25 分钟前
AI 算法核心原理与实现
人工智能·算法·机器学习
Eloudy27 分钟前
最小权重完美匹配(MWPM)与表面码纠错
算法·量子计算
一尘之中27 分钟前
基于架构的软件开发方法
学习·架构·ai写作
-森屿安年-28 分钟前
62. 不同路径
算法·动态规划