object Main {
def isArraySortedAndValidGap(arr: Array[Int]): Boolean = {
if (arr.length < 2) return true
var result = true
val increasing = arr(1) > arr(0)
for (i <- 1 until arr.length) {
val diff = (arr(i) - arr(i - 1)).abs
if (diff < 1 || diff > 3) {
result = false
} else {
if ((increasing && arr(i) <= arr(i - 1)) || (!increasing && arr(i) >= arr(i - 1))) {
result = false
}
}
}
result
}
def main(args: Array[String]): Unit = {
val arr1 = Array(1, 2, 3, 5, 8, 11, 14, 15)
println(isArraySortedAndValidGap(arr1))
val arr2 = Array(15, 14, 11, 8, 5, 3, 2, 1)
println(isArraySortedAndValidGap(arr2))
val arr3 = Array(1, 2, 300, 5, 8, 11, 14, 15)
println(isArraySortedAndValidGap(arr3))
}
}
/*
run:
true
true
false
*/