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. 寻找峰值(二分)的主要内容,如果未能解决你的问题,请参考以下文章