給定一個整數數組 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