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
posted @ 2021-12-27 17:13  焰红火  阅读(57)  评论(0)    收藏  举报