Leetcode 852. 山脉数组的峰顶索引
题目
我们把符合下列属性的数组 A 称作山脉:
- A.length >= 3
- 存在 0 < i < A.length - 1 使得A[0] < A[1] < … A[i-1] <A[i] > A[i+1] > … > A[A.length - 1]
给定一个确定为山脉的数组,返回任何满足 A[0] < A[1] < … A[i-1] < A[i] > A[i+1] > … > A[A.length - 1] 的 i 的值。
测试样例
示例 1:
输入:[0,1,0]
输出:1
示例 2:
输入:[0,2,1,0]
输出:1
提示:
- 3 <= A.length <= 10000
- 0 <= A[i] <= 10^6
- A 是如上定义的山脉
题解
暴力,找到左边符合要求的可能山顶下标,再判断右边是否符合要求。
详细过程见代码
代码
int peakIndexInMountainArray(vector<int>& A) {
int n = A.size();
int i=0,j,k;
while(i < n){
j = i+1;
while(j<n && A[j]>A[j-1]) j++; //找到左边符合要求的可能山顶
if(j == i+1) i++; //左边无
else{
j--;
k = j+1;
while(k<n && A[k]<A[k-1]) k++; //找到右边符合要求的边界
if(k==j+1) i = k; //右边无
else return j;
}
}
return -1;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/peak-index-in-a-mountain-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。