LetCode 941: Valid Mountain Array
给定一个整数数组 arr,如果它是有效的山脉数组就返回 true,否则返回 false
第一种方法:先求出最大数的下标,然后判断最大数左边和右边的元素都小于最大数
def validMountainArray(arr):
index = arr.index(max(arr))
if index == 0 or index == len(arr) - 1:
return False
for i in range(0, index):
if arr[i] >= arr[i+1]:
return False
for j in range(index, len(arr)-1): # 注意这里是len(arr)-1,否则,j+1 会out of index
if arr[j] <= arr[j+1]:
return False
return True
第二种方法是用双指针:i从左向右遍历,找到最大arr[i] > arr[i+1]之后,停止遍历,j从右向左遍历,找到arr[j-1]< arr[j]之后停止遍历,再判断
def validMountainArray(arr):
if not arr or len(arr) < 3:
return False
n = len(arr)
i = 0
j = n-1
while i < j and arr[i] < arr[ i+1]:
i += 1
while j > i and arr[j - 1] > arr[j]:
j -= 1
return i == j and i != 0 and j != n-1

浙公网安备 33010602011771号