日拱一卒(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

相关推荐
八解毒剂13 小时前
数据结构-平衡二叉树——对二叉搜索树的优化
数据结构·c++·算法
sensen_kiss13 小时前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.9 软件测试 (Software Testing)(下)
学习·软件工程
wu_ye_m14 小时前
学习c语言第35天 函数声明和定义
c语言·开发语言·学习
运行时记录14 小时前
别再手动写提示词了 — SkillOpt 让技能文档自己进化
算法
清辞85314 小时前
Coze从入门到实战---第一、二章
大数据·人工智能·学习·语言模型
啦啦啦啦啦zzzz14 小时前
算法总结(二分查找、双指针)
c++·算法
伊布拉西莫14 小时前
【流畅的Python】第20章:并发执行器 — 学习笔记
笔记·python·学习
qq_85730581914 小时前
python语法
开发语言·python·算法
jinglong.zha15 小时前
LScript-从零基础到商业变现的AI自动化学习平台
运维·学习·自动化
DXM052115 小时前
第9期|从机器学习到深度学习:AI遥感解译的进化逻辑
人工智能·算法·计算机视觉