Программа PHP для поиска недостающих элементов в массиве

Опубликовано: 24 Февраля, 2022

Мы должны найти элемент (ы) в массиве, который отсутствует в массиве в диапазоне от минимума до максимума массива.

Примеры:

Ввод: arr [] = (1, 2, 3, 4, 6, 7, 8)
Выход: 5
Минимум массива равен 1, а максимум -
8. Недостающий элемент в диапазоне от
От 1 до 8 равно 5.

Ввод: arr [] = (10, 11, 14, 15)
Выход: 12, 13

Рекомендуется: сначала попробуйте свой подход в {IDE}, прежде чем переходить к решению.

Эта проблема может быть решена путем итерации в массиве, наблюдая непрерывную разницу между элементами. Но в PHP мы можем использовать некоторые встроенные функции для решения проблемы.

Для этой цели нам нужно будет использовать следующие две функции:

  1. Функция range (): эта функция используется для создания массива элементов любого типа, таких как целые числа, алфавиты в заданном диапазоне (от низкого до высокого), т.е. первый элемент списка считается низким, а последний - высоким.
  2. Функция array_diff (): если у нас есть массив элементов, мы можем найти недостающие элементы, сравнив два массива.

The idea to solve this problem using two inbuilt functions is to, first use range() function to create a new array from starting element and maximum element of original array using max() function. After this we apply array_diff() function to compare newly created array and original array thus getting all the missing elements of the original array.

<?php
    // PHP code to find missing elements
  
    function not_present($list)
    {
        // Create an array with range from array 
        // minimum to maximum.
        $new_array = range(min($list), max($list));
  
        // Find those elements that are present
        // in new_array but not in given list
        return array_diff($new_array, $list);
    }
  
    // Driver code
    print_r(not_present(array(1, 2, 3, 4, 7, 8)));
    print_r(not_present(array(10, 11, 12, 14, 15, 16)));    
?>

Выход:

Множество
(
    [4] => 5
    [5] => 6
)
Множество
(
    [3] => 13
)
PHP