日拱一卒(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: List[int]) -> int:

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

while left+1 < right:

mid = (left+right)//2

if arr[mid] < arr[mid+1]:

left = mid

else:

right = mid

return right

相关推荐
吃好睡好便好12 小时前
说说损伤膝盖的行为和保护膝盖的方法
学习
宵时待雨13 小时前
回溯算法专题1:递归
数据结构·c++·笔记·算法·leetcode·深度优先
爱思德学术13 小时前
【SPIE出版】黄冈师范学院主办!第四届大数据、计算智能与应用国际会议(BDCIA 2026)
大数据·算法·数据分析·云计算·etl
洛水水13 小时前
【力扣100题】40.二叉树中的最大路径和
算法·leetcode·深度优先
洛水水13 小时前
【力扣100题】37.从前序与中序遍历序列构造二叉树
c++·算法·leetcode
zyq99101_113 小时前
递归与动态规划实战代码解析
python·算法·蓝桥杯
一只机电自动化菜鸟13 小时前
一建机电备考笔记(34)焊接技术(设备与材料1)(含考频+题型)
笔记·学习·职场和发展·生活·学习方法
橘白31613 小时前
rl笔记(一):策略梯度更新算法推导
人工智能·算法·机器人·强化学习
hhhhhaaa13 小时前
多节点矩阵式任务系统:统一配置中心与动态规则引擎架构设计
后端·算法·架构
吃着火锅x唱着歌13 小时前
LeetCode 739.每日温度
算法·leetcode·职场和发展