Keshawn_lu's Blog

Leetcode 941. 有效的山脉数组

字数统计: 322阅读时长: 1 min
2020/11/03 Share

题目简介:

给定一个整数数组 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]

示例 1:

1
2
输入:[2,1]
输出:false

示例 2:

1
2
输入:[3,5,5]
输出:false

示例 3:

1
2
输入:[0,3,2,1]
输出:true

提示:

  1. 0 <= A.length <= 10000
  2. 0 <= A[i] <= 10000

思路:

单指针遍历即可,定义flag来确认有没有经历上升和下降的过程,其中下降的过程结束后,指针需要遍历到数组的最后才可以。

tip:

  • 长度小于3的数组直接返回false即可。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Solution {
public:
bool validMountainArray(vector<int>& A) {

if(A.size() < 3)
return false;

int i = 1;
int flag = 0;

while(i < A.size()){

while(i < A.size() && A[i - 1] < A[i]){

flag = 1;
i++;
}

if(flag == 0)
return false;

flag = 0;
while(i < A.size() && A[i - 1] > A[i]){

flag = 1;
i++;
}

if(flag == 0 || i < A.size()) //未遍历完也返回false
return false;
}

return true;
}
};
CATALOG
  1. 1. 题目简介:
  2. 2. 思路:
  3. 3. 代码如下: