给定一个整数数组 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]
算法思路
classSolution:defvalidMountainArray(self, A)->bool:iflen(A)>=3:
b = A[0]
sta=Falsefor i inrange(1,len(A)):if A[i]== b:returnFalseelif A[i]> b:
sta=True
b = A[i]else:
b = A[i]breakelse:returnFalsefor j inrange(i +1,len(A)):if A[j]== b or A[j]> b:returnFalseelse:
b = A[j]return sta
returnFalse
双指针
classSolution:defvalidMountainArray(self, A: List[int])->bool:
l,r=0,len(A)-1while l<r and A[l]<A[l+1]: l+=1while r>l and A[r]<A[r-1]: r-=1return l==r and l!=0and r!=len(A)-1