Description
Given an array A of integers, return true if and only if it is a valid mountain array.
Recall that A is a mountain array if and only if:
- A.length >= 3
- There exists some i with 0 < i < A.length - 1 such that:
- A[0] < A[1] < … A[i-1] < A[i]
- A[i] > A[i+1] > … > A[A.length - 1]
Example 1:
Input: [2,1]
Output: false
Example 2:
Input: [3,5,5]
Output: false
Example 3:
Input: [0,3,2,1]
Output: true
Note:
- 0 <= A.length <= 10000.
- 0 <= A[i] <= 10000.
分析
题目的意思是:这道题是判断一个数组是否是山峰数组,即先增后减,我设置了incre和decre来分别标记递增和递减,然后遍历一次判断就行了。然后我比较了一下答案,发现答案也只需要遍历一次,不过方法比我简洁,先找递增,再找递减,如果遍历到了末尾说明是符合要求的,否则就不是。
代码
class Solution:
def validMountainArray(self, A: List[int]) -> bool:
incre=False
decre=False
for i in range(len(A)-1):
if(A[i]==A[i+1]):
return False
elif(not decre and A[i]<A[i+1]):
incre=True
elif(incre and A[i]>A[i+1]):
decre=True
else:
return False
return incre and decre