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