Leetcode刷题Python852. 山脉数组的峰顶索引
Posted Better Bench
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题Python852. 山脉数组的峰顶索引相关的知识,希望对你有一定的参考价值。
1 题目
符合下列属性的数组 arr 称为 山脉数组 :
arr.length >= 3
存在 i(0 < i < arr.length - 1)使得:
arr[0] < arr[1] < … arr[i-1] < arr[i]
arr[i] > arr[i+1] > … > arr[arr.length - 1]
给你由整数组成的山脉数组 arr ,返回任何满足 arr[0] < arr[1] < … arr[i - 1] < arr[i] > arr[i + 1] > … > arr[arr.length - 1] 的下标 i 。
示例 1:
输入:arr = [0,1,0]
输出:1
示例 2:
输入:arr = [0,2,1,0]
输出:1
2 解析
用二分查找的话,时间复杂度是Log(n)。思路是
- 中间值大于后一个值的话,意思是已经爬坡过了峰值,那峰值一定在左边部分
- 中间值小于后一个值的话,还在爬坡,峰值在右部分
3 Python实现
class Solution:
def peakIndexInMountainArray(self, arr: List[int]) -> int:
left,right = 0,len(arr)-1
result = 0
while left<=right:
mid = (left+right)//2
if arr[mid]>arr[mid+1]:
result = mid
right = mid-1
else:
left = mid+1
return result
以上是关于Leetcode刷题Python852. 山脉数组的峰顶索引的主要内容,如果未能解决你的问题,请参考以下文章
Python描述 LeetCode 852. 山脉数组的峰顶索引