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

相关推荐
橘子汽水16816 分钟前
Leetcode 208,207实现Trie前缀树,课程表
java·数据结构·算法·leetcode
hanlin0320 分钟前
刷题笔记:力扣第169题-多数元素
笔记·算法·leetcode
hfywmsj27 分钟前
广州餐饮铺位招租数据建模:基于多维评估体系的选址算法设计与实现
人工智能·算法·广州餐饮铺位招租
Terra.K35 分钟前
JAVA职业探索和学习----中间件开发目标
java·学习·中间件
wabs66635 分钟前
关于二叉树【力扣116.填充每个节点的下一个右侧节点指针的思考】
数据结构·c++·算法·leetcode·二叉树·层序遍历
动词ing41 分钟前
【学习笔记】数据结构(哈希表基础+哈希集合+哈希映射+计数+查找)
数据结构·学习·哈希算法
kaixin_啊啊42 分钟前
中国研究生数学建模竞赛(华为杯)学习笔记——数据预处理全流程
人工智能·笔记·学习·数学建模·ai·大模型·数据预处理
Nil2081 小时前
leetcode 74搜索二维矩阵
算法·leetcode·矩阵
新知图书1 小时前
第 14 章 后训练算法GRPO详解与实战
人工智能·算法
shirsl3 小时前
算法 Day1-数组 / 哈希 + 双指针
python·算法·哈希算法