题意:
给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。
让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:
A.length >= 3- 在
0 < i < A.length - 1条件下,存在i使得:A[0] < A[1] < ... A[i-1] < A[i]A[i] > A[i+1] > ... > A[A.length - 1]
解题思路:
直接扫描,模拟判断就行,如果下一个比上一个大,就一直往后走。如果最大的在第一位或者在最后一位,那么不满足。
如果满足上一条,那么直到降序的是最后一个满足
class Solution {
public:
bool validMountainArray(vector<int>& A) {
int k = A.size(), p = 0;
while(p + 1 < k && A[p] < A[p+1]) {
p++;
}
if(p == 0 || p == k-1) { // 如果最大的在第一位或者在最后一位
return false;
}
while(p + 1 < k && A[p] > A[p+1]) {
p++;
}
if(p == k-1) { // 如果能够递减到最后一个
return true;
} else {
return false;
}
}
};

本文介绍了一种算法,用于判断一个整数数组是否为有效的山脉数组。通过一次遍历即可完成验证,确保数组先升后降且长度至少为3。
858

被折叠的 条评论
为什么被折叠?



