其他分享
首页 > 其他分享> > 【数组】941. 有效的山脉数组

【数组】941. 有效的山脉数组

作者:互联网

题目:

 

 

解答:

方法一:线性扫描。

我们从数组的最左侧开始扫描,直到找到第一个不满足 A[i] < A[i + 1] 的 i,那么 i 就是这个数组的最高点。如果 i = 0 或者不存在这样的 i(即整个数组都是单调递增的),那么就返回 false。否则从 i 开始继续扫描,判断接下来的的位置 j 是否都满足 A[j] > A[j + 1],若都满足就返回 true,否则返回 false。

 1 class Solution {
 2 public:
 3     bool validMountainArray(vector<int>& A) 
 4     {
 5         int N = A.size();
 6         int i = 0;
 7 
 8         // walk up
 9         while (i+1 < N && A[i] < A[i+1])
10         {
11             i++;
12         }
13 
14         // peak can't be first or last
15         if (i == 0 || i == N-1)
16         {
17             return false;
18         }
19 
20         // walk down
21         while (i+1 < N && A[i] > A[i+1])
22         {
23             i++;
24         }
25 
26         return i == N-1;
27     }
28 };

 

标签:false,int,扫描,941,数组,山脉,return,walk
来源: https://www.cnblogs.com/ocpc/p/12827664.html