题目:
给定一个整数数组 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
}