941. Valid Mountain Array

Valid Mountain Array - LeetCode

Given an array of integers arr, return true if and only if it is a valid mountain array. Recall that arr is a mountain array if and only if:

arr.length >= 3 There exists some i with 0 < i < arr.length - 1 such that: arr[0] < arr[1] < … < arr[i - 1] < arr[i] arr[i] > arr[i + 1] > … > arr[arr.length - 1]

Example 1: Input: arr = [2,1] Output: false

Example 2: Input: arr = [3,5,5] Output: false

Example 3: Input: arr = [0,3,2,1] Output: true

Constraints:

1 <= arr.length <= 104
0 <= arr[i] <= 104

  • code
class Solution:
    def validMountainArray(self, arr: List[int]) -> bool:
        if len(arr) < 3 or arr[0] >= arr[1] or arr[-1] >= arr[-2]: return False
        i = 1
        while i < len(arr) - 1:
            if arr[i] < arr[i + 1]: i += 1
            elif arr[i] == arr[i + 1]: return False
            else: break
            
        while i < len(arr) - 1:
            if arr[i] > arr[i + 1]: i += 1
            else: return False
        return True
  • code
class Solution:
    def validMountainArray(self, arr: List[int]) -> bool:
        if len(arr) < 3 or arr[0] >= arr[1] or arr[-1] >= arr[-2]:
            return False
        
        up = True
        for i in range(1, len(arr)):
            if arr[i] == arr[i-1]:
                return False
            if up:
                if arr[i] < arr[i-1]:
                    up = False
            else:
                if arr[i] > arr[i-1]:
                    return False
                    
        return True



  • code
class Solution(object):
    def validMountainArray(self, A):
        N = len(A)
        i = 0

        while i+1 < N and A[i] < A[i+1]:
            i += 1

        if i == 0 or i == N-1: return False

        while i+1 < N and A[i] > A[i+1]:
            i += 1

        return i == N-1