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. 山脉数组的峰顶索引的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode刷题852-简单-山脉数组的峰顶索引

Python描述 LeetCode 852. 山脉数组的峰顶索引

LeetCode852. 山脉数组的峰顶索引(C++)

leetcode-852-山脉数组的峰顶索引

LeetCode——852. 山脉数组的峰顶索引(Java)

力扣(LeetCode) 852. 山脉数组的峰顶索引