fun isArraySortedAndValidGap(arr: IntArray): Boolean {
if (arr.size < 2) return true
val increasing = arr[1] > arr[0]
for (i in 1 until arr.size) {
val diff = Math.abs(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
}
fun main() {
val arr1 = intArrayOf(1, 2, 3, 5, 8, 11, 14, 15)
println(isArraySortedAndValidGap(arr1))
val arr2 = intArrayOf(15, 14, 11, 8, 5, 3, 2, 1)
println(isArraySortedAndValidGap(arr2))
val arr3 = intArrayOf(1, 2, 300, 5, 8, 11, 14, 15)
println(isArraySortedAndValidGap(arr3))
}
/*
run:
true
true
false
*/