【力扣日記】941 有效的山脈數組 | 雙指針

題目描述

給定一個整數數組 A,如果它是有效的山脈數組就返回 true,否則返回 false。

讓我們回顧一下,如果 A 滿足下述條件,那麼它是一個山脈數組:

A.length >= 30 < i < A.length - 1 條件下,存在 i 使得:
A[0] < A[1] < ... A[i-1] < A[i]
A[i] > A[i+1] > ... > A[A.length - 1]

算法思路

class Solution:
    def validMountainArray(self, A) -> bool:
        if len(A) >= 3:
            b = A[0]
            sta= False
            for i in range(1, len(A)):
                if A[i] == b:
                    return False
                elif A[i] > b:
                    sta=True
                    b = A[i]
                else:
                    b = A[i]
                    break
            else:return False

            for j in range(i + 1, len(A)):
                if A[j] == b or A[j] > b:
                    return False
                else:
                    b = A[j]
            return sta

        return False

雙指針

class Solution:
    def validMountainArray(self, A: List[int]) -> bool:
        l,r=0,len(A)-1
        while l<r and A[l]<A[l+1]: l+=1
        while r>l and A[r]<A[r-1]: r-=1
        return l==r and l!=0 and r!=len(A)-1
class Solution:
    def validMountainArray(self, A: List[int]) -> bool:
        l,r=0,len(A)-1
        while l<r:
            if A[l]<A[l+1]: 
                l+=1
            elif A[l]==A[l+1]:
                return False
            else:
                break
        if l==0:return False
        while r>l: 
            if A[r]<A[r-1]:
                r-=1
            elif A[r]==A[r-1]:
                return False
            else:
                break
        return l==r and r!=len(A)-1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章