[E二分] lc852. 山脉数组的峰顶索引(二分+思维+脑筋急转弯)
Posted Ypuyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[E二分] lc852. 山脉数组的峰顶索引(二分+思维+脑筋急转弯)相关的知识,希望对你有一定的参考价值。
1. 题目来源
2. 题目解析
数据太强,搞得这题没啥意思了。
等价于寻找数组中的最大值,且最大值左右两段均严格递减。
**可以一次遍历也可以二分,不过这个二分有点考思维…
- 需要定义一个性质,该性质具有二段性,保证能够二分。这个性质就是单调性。
mid
出来之后,用a[mid-1]
与a[mid]
的大小关系来判断mid
再哪一段中,再进行二分即可。- 所以这道题至少包含 3 个值…**
时间复杂度: O ( l o g n ) O(logn) O(logn)
空间复杂度: O ( 1 ) O(1) O(1)
O ( n ) O(n) O(n)
class Solution {
public:
int peakIndexInMountainArray(vector<int>& arr) {
int res = 0;
while (arr[res] < arr[res + 1]) res ++ ;
return res;
}
};
O ( l o g n ) O(logn) O(logn)
// 花里胡哨的二分
class Solution {
public:
int peakIndexInMountainArray(vector<int>& arr) {
int l = 1, r = arr.size() - 2;
while (l < r) {
int mid = l + r + 1 >> 1;
if (arr[mid] > arr[mid - 1]) l = mid;
else r = mid - 1;
}
return r;
}
};
以上是关于[E二分] lc852. 山脉数组的峰顶索引(二分+思维+脑筋急转弯)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 852 山脉数组的峰顶索引[二分法] HERODING的LeetCode之路
JS Leetcode 852. 山脉数组的峰顶索引图解分析,高高的山峰一起吹山风吧。