LeetCode 941. 有效的山脈陣列(C、C++、python)
阿新 • • 發佈:2018-12-02
給定一個整數陣列 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[B.length - 1]
示例 1:
輸入:[2,1] 輸出:false
示例 2:
輸入:[3,5,5] 輸出:false
示例 3:
輸入:[0,3,2,1] 輸出:true
提示:
0 <= A.length <= 10000
0 <= A[i] <= 10000
C
bool validMountainArray(int* A, int ASize) { int n=ASize; if(n<3) { return false; } else { int index=0; for(int i=1;i<n-1;i++) { if(A[i]>A[i-1] && A[i]>A[i+1]) { index=i; break; } } if(index!=0) { for(int i=0;i<index;i++) { if(A[i]>=A[i+1]) { return false; } } for(int i=index+1;i<n;i++) { if(A[i]>=A[i-1]) { return false; } } return true; } else { return false; } } }
C++
class Solution { public: bool validMountainArray(vector<int>& A) { int n=A.size(); if(n<3) { return false; } else { int index=max_element(A.begin(),A.end())-A.begin(); if(index!=0 && index!=n-1) { for(int i=0;i<index;i++) { if(A[i]>=A[i+1]) { return false; } } for(int i=index+1;i<n;i++) { if(A[i]>=A[i-1]) { return false; } } return true; } else { return false; } } } };
python
class Solution:
def validMountainArray(self, A):
"""
:type A: List[int]
:rtype: bool
"""
n=len(A)
if n<3:
return False
else:
index=A.index(max(A))
if 0==index or n-1==index:
return False
else:
for i in range(0,index):
if A[i]>=A[i+1]:
return False
for i in range(index+1,n):
if A[i]>=A[i-1]:
return False
return True