思路
理解题意,我们需要找到峰值,这个峰值就是当前的值一定是严格大于左右相邻元素,可能有许多峰值但是返回一个即可,并且nums[-1] = nums[n] = 负无穷
,如图所示。
绿色箭头的都可以算作答案,如何找到呢?如果当前节点的下一个节点是小于它的,那么一定可以说当前节点的左边有答案。
那么就可以使用二分查找来得到答案,因为每一次如果当前节点的下一个节点是小于它的,那么就可以判断出答案一定是是在左区间,每一次都可以排除一半从r = mid
。
二分的本质是两段性
代码
理解题意,我们需要找到峰值,这个峰值就是当前的值一定是严格大于左右相邻元素,可能有许多峰值但是返回一个即可,并且nums[-1] = nums[n] = 负无穷
,如图所示。
绿色箭头的都可以算作答案,如何找到呢?如果当前节点的下一个节点是小于它的,那么一定可以说当前节点的左边有答案。
那么就可以使用二分查找来得到答案,因为每一次如果当前节点的下一个节点是小于它的,那么就可以判断出答案一定是是在左区间,每一次都可以排除一半从r = mid
。
二分的本质是两段性