How to check if an array is all increasing or decreasing and the gap between numbers is 1, 2 or 3 in PHP

1 Answer

0 votes
function isArraySortedAndValidGap($arr) {
    $size = count($arr);
    if ($size < 2) return true;

    $increasing = $arr[1] > $arr[0];
    for ($i = 1; $i < $size; ++$i) {
        $diff = $arr[$i] - $arr[$i - 1];
        if ($diff != 1 && $diff != 2 && $diff != 3 && $diff != -1 && $diff != -2 && $diff != -3) {
            return false;
        }
        if (($increasing && $diff <= 0) || (!$increasing && $diff >= 0)) {
            return false;
        }
    }
    return true;
}

$arr1 = array(1, 2, 3, 5, 8, 11, 14, 15);
if (isArraySortedAndValidGap($arr1)) {
    echo "Array is sorted and has valid gaps\n";
} else {
    echo "Array is not sorted or gaps are invalid\n";
}

$arr2 = array(15, 14, 11, 8, 5, 3, 2, 1);
if (isArraySortedAndValidGap($arr2)) {
    echo "Array is sorted and has valid gaps\n";
} else {
    echo "Array is not sorted or gaps are invalid\n";
}


 
/*
run:
 
Array is sorted and has valid gaps
Array is sorted and has valid gaps
 
*/

 



answered Jan 12, 2025 by avibootz
...