有效的山脉数组 - 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
}