941. 有效的山脉数组

108 阅读1分钟

题目:
给定一个整数数组 arr,如果它是有效的山脉数组就返回 true,否则返回 false。

让我们回顾一下,如果 arr 满足下述条件,那么它是一个山脉数组:

arr.length >= 3 在 0 < i < arr.length - 1 条件下,存在 i 使得: arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i+1] > ... > arr[arr.length - 1]

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/va… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法:
注意边界条件l,r没有移动不符合条件(最高点不能是数组的第一个位置或最后一个位置)


func validMountainArray(arr []int) bool {
    // incress  
    // decress
    if len(arr) < 3 {
        return false
    }
    l, r := 0, len(arr) - 1

    
        for l < r {
            if arr[l] < arr[l + 1]  {
                l ++
            } else {
                break
            }
        }
     
        for l < r {
            if arr[r - 1] > arr[r] {
                r --
            } else {
                break
            }
        }
        if l != r || l == 0 || r == len(arr) - 1 { // 注意边界条件l,r没有移动不符合条件
            return false
        }
    
    return true
}