一、概念定义
一般二分的问题是建立在单调函数上的,那么对于有极值的函数怎么办呢?
考虑一个有极大值的函数(比如抛物线,即二次函数),如何在函数上找到一个给定值的下标呢?

对于这样一个问题,它的斜率一定是先为正数,再为负数,也就是满足单调递减。于是,可以二分斜率找到极大值点,然后在左边和右边分别进行二分查找。
二、题目描述
给你一个 山脉数组
mountainArr,请你返回能够使得mountainArr.get(index)等于target最小的下标index值。如果不存在这样的下标index,就请返回-1。
何为山脉数组?如果数组 A 是一个山脉数组的话,那它满足如下条件:
首先,A.length >= 3
其次,在0 < i < A.length - 1条件下,存在i使得:
A[0] < A[1] < ... A[i-1] < A[i]
A[i] > A[i+1] >
本文是《算法零基础100讲》的第67讲,主要介绍如何结合线性枚举和二分查找解决寻找山脉数组最小下标的难题。文章详细解释了如何通过二分斜率找到极大值点,然后在两侧进行二分查找,同时提供了算法的源码剖析和相关习题推荐。
订阅专栏 解锁全文
1914

被折叠的 条评论
为什么被折叠?



