Tenemos que encontrar elementos en la array que faltan en una array en el rango desde el mínimo de la array hasta el máximo de la array.
Ejemplos:
Input : arr[] = (1, 2, 3, 4, 6, 7, 8) Output : 5 The array minimum is 1 and maximum is 8. The missing element in range from 1 to 8 is 5. Input : arr[] = (10, 11, 14, 15) Output : 12, 13
Este problema se puede resolver iterando en una array observando la diferencia contigua entre los elementos. Pero en PHP podemos hacer uso de algunas funciones integradas para resolver el problema.
Tendremos que usar las siguientes dos funciones para este propósito:
- Función range() : esta función se usa para crear una array de elementos de cualquier tipo, como números enteros, alfabetos dentro de un rango determinado (de menor a mayor), es decir, el primer elemento de la lista se considera bajo y el último se considera alto.
- función array_diff() : si tenemos una array de elementos, podemos encontrar los elementos faltantes comparando dos arrays.
La idea de resolver este problema usando dos funciones incorporadas es, primero usar la función range() para crear una nueva array a partir del elemento inicial y el elemento máximo de la array original usando la función max(). Después de esto, aplicamos la función array_diff() para comparar la array recién creada y la array original, obteniendo así todos los elementos faltantes de la array original.
<?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))); ?>
Producción:
Array ( [4] => 5 [5] => 6 ) Array ( [3] => 13 )