package main
import (
"fmt"
"math"
)
func isArraySortedAndValidGap(arr []int) bool {
if len(arr) < 2 {
return true
}
increasing := arr[1] > arr[0]
for i := 1; i < len(arr); i++ {
diff := math.Abs(float64(arr[i] - arr[i-1]))
if diff < 1 || diff > 3 {
return false
}
if (increasing && arr[i] <= arr[i-1]) || (!increasing && arr[i] >= arr[i-1]) {
return false
}
}
return true
}
func main() {
arr := []int{1, 2, 3, 5, 8, 11, 14, 15}
fmt.Println(isArraySortedAndValidGap(arr))
arr = []int{15, 14, 11, 8, 5, 3, 2, 1}
fmt.Println(isArraySortedAndValidGap(arr))
arr = []int{1, 2, 300, 5, 8, 11, 14, 15}
fmt.Println(isArraySortedAndValidGap(arr))
}
/*
run:
true
true
false
*/