我们把符合下列属性的数组 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