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

相关推荐
wenyq79 小时前
LeetCode 2460. Apply Operations to an Array
算法·leetcode
0566469 小时前
agent学习——流式响应与文本切分
网络·python·学习
.格子衫.10 小时前
032动态规划之区间DP——算法备赛
算法·动态规划
青 春 记 忆10 小时前
LeetCode 142. 环形链表 II|Python 解法详解
python·leetcode·链表
for_ever_love__10 小时前
python基础语法学习: 面向对象的三大特性
开发语言·python·学习
不会代码的小猴10 小时前
7. JSON
开发语言·c++·笔记·qt·算法·json
怪奇云呼军11 小时前
知识库也会注入指令?闪电智能VoiceAgent 如何防住 Prompt Injection
人工智能·python·算法·云计算·音视频
阿里云大数据AI技术12 小时前
基于 EMR Serverless Ray 实现 Qwen 模型批量推理实践
人工智能·算法·agent
Canmag 兴隆磁性12 小时前
C 系列充磁机
c语言·开发语言·学习·永磁材料·充磁·退磁