public class Main {
public static boolean isArraySortedAndValidGap(int[] arr) {
if (arr == null || arr.length < 2) {
return false;
}
boolean isIncreasing = arr[1] > arr[0];
for (int i = 1; i < arr.length; i++) {
int gap = Math.abs(arr[i] - arr[i - 1]);
if (gap < 1 || gap > 3) {
return false;
}
if (isIncreasing && arr[i] <= arr[i - 1]) {
return false;
}
if (!isIncreasing && arr[i] >= arr[i - 1]) {
return false;
}
}
return true;
}
public static void main(String[] args) {
int[] array1 = {1, 2, 3, 5, 8, 11, 14, 15};
int[] array2 = {15, 14, 11, 8, 5, 3, 2, 1};
int[] array3 = {1, 2, 3, 5, 8, 110, 14, 15};
System.out.println(isArraySortedAndValidGap(array1));
System.out.println(isArraySortedAndValidGap(array2));
System.out.println(isArraySortedAndValidGap(array3));
}
}
/*
run:
true
true
false
*/