162. 寻找峰值(二分)

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了162. 寻找峰值(二分)相关的知识,希望对你有一定的参考价值。

162. 寻找峰值

题意:给定 n n n个不同的数,找到一个峰值位置。

法1: O ( n ) O(n) O(n)扫。

法2:二分答案位置,若 a m i d < a m i d + 1 a_{mid}<a_{mid+1} amid<amid+1 显然答案可以是 [ m i d + 1 , r ] [mid+1,r] [mid+1,r] 区间里。

否则答案是 [ l , m i d ] [l,mid] [l,mid]区间里。

至于二分的正确性比较显然,因为如果 a m i d < a m i d + 1 a_{mid}<a_{mid+1} amid<amid+1 若右区间单增,显然根据题意末尾的位置是可行的, 否则出现先升后降则该位置为答案,左区间类似。

若不修改多次区间查询,则方法2能过。

如果有单点修改,则用线段树维护区间即可。
时间复杂度: O ( q l o g n ) O(qlogn) O(qlogn)

以上是关于162. 寻找峰值(二分)的主要内容,如果未能解决你的问题,请参考以下文章

非有序的二分162. 寻找峰值

leetcode(162)---寻找峰值(二分查找)

162. 寻找峰值二分查找

162. 寻找峰值二分查找

Leetcode No.162 寻找峰值(二分查找)

Leetcode No.162 寻找峰值(二分查找)