【力扣日记】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
发布了317 篇原创文章 · 获赞 44 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Heart_for_Ling/article/details/105455074
今日推荐