Как получить наибольшую разницу между списком упорядоченных номеров в PHP? - PullRequest
1 голос
/ 01 ноября 2009

Например,

1,3,6,8,11,45,99

Интервал между числами:

2,3,2,3,34,54

Итак, наибольшая разница - 54.

Как реализовать эту функцию?

function get_greatest_diff($arr_of_numbers)
{}

Ответы [ 3 ]

2 голосов
/ 01 ноября 2009

Вы должны обработать случай, когда массив имеет менее 2 элементов отдельно:

$maxDiff = -1;
for ($i = 0; $i + 1 < count($array); $i++) {
    $diff = $array[$i + 1] - $array[$i];
    if ($diff > $maxDiff)
        $maxDiff = $diff;
    }
}
2 голосов
/ 01 ноября 2009

У вас есть много разных вариантов:

  • Сортируйте массив, затем сравните первый и последний элемент.
    1. Для каждого элемента сравните его с каждым последующим элементом. Сохраняйте наибольшую разницу в памяти.
    2. Реализовать сортировку слиянием, но вместо исходных отсортированных значений вернуть разницу.
1 голос
/ 01 ноября 2009

Вы должны сделать что-то вроде этого:

$greatest_diff = 0;

for($i = 0; $i < sizeof($arr_of_numbers) - 1; $i++)
{
    $current_diff = $arr_of_numbers[$i + 1] - $arr_of_numbers[$i];
    if($current_diff > $greatest_diff){
        $greatest_diff = $current_diff;
    }
}

echo $greatest_diff;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...