我们把符合下列属性的数组 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 是如上定义的山脉
思路:
这是一道简单难度的题目。因为已经是山脉数组了,所以游标前进比较每个元素的大小,当第一次遇到元素的下一个元素小于本元素的值时,该元素即是山顶peak,返回其序号即可。
AC代码:
//一个效率不高的版本
class Solution {
public:
int peakIndexInMountainArray(vector<int>& A) {
if(A.size() < 3)
return 0;
int peakIndex = 0,presentMax =0;
for(vector<int>::iterator it = A.begin(); it != A.end(); it++)
{
if(*it >= presentMax)
{
presentMax = *it;
}
else
break;
peakIndex++;
}
return peakIndex-1 ;
}
};
Published by