How to find the floor and ceiling of the value N in an unsorted array with PHP

1 Answer

0 votes
function findFloorAndCeil(array $arr, int $N): array {
    $floorval = PHP_INT_MIN; // Initialize to smallest possible value
    $ceilval = PHP_INT_MAX;  // Initialize to largest possible value

    foreach ($arr as $num) {
        if ($num <= $N && $num > $floorval) {
            $floorval = $num; // Update floorval if num is closer to N
        }
        if ($num >= $N && $num < $ceilval) {
            $ceilval = $num; // Update ceilval if num is closer to N
        }
    }

    // If no valid floorval or ceilval is found, set them to a special value
    if ($floorval === PHP_INT_MIN) {
        $floorval = -1;
    }
    if ($ceilval === PHP_INT_MAX) {
        $ceilval = -1;
    }

    return [$floorval, $ceilval];
}

$arr = [4, 10, 8, 2, 6, 9, 1];
$N = 5;

list($floorval, $ceilval) = findFloorAndCeil($arr, $N);

echo "floor: " . ($floorval === -1 ? "None" : $floorval) . PHP_EOL;
echo "ceil: " . ($ceilval === -1 ? "None" : $ceilval) . PHP_EOL;



/*
run:

floor: 4
ceil: 6

*/

 



answered 4 days ago by avibootz
edited 4 days ago by avibootz
...