有效的山脉数组 - flag 变量 §
func validMountainArray(arr []int) bool {
n := len(arr)
if n < 3 {
return false
}
isUp := true
for i := 1; i < n; i++ {
if arr[i - 1] < arr[i] {
if !isUp {
return false
}
} else if arr[i - 1] > arr[i] {
if i == 1 {
return false
}
isUp = false
} else {
return false
}
}
return !isUp
}
有效的山脉数组 - 双指针 §
func validMountainArray(arr []int) bool {
n := len(arr)
if n < 3 {
return false
}
left, right := 0, n - 1
for left < n - 1 && arr[left] < arr[left + 1] {
left++
}
for right > 0 && arr[right] < arr[right - 1] {
right--
}
return left == right && left != 0 && right != n - 1
}