我们必须在数组中找到从数组最小值到数组最大值范围内的数组中缺失的元素。
例子
1 2 3 4 5 6 7 8 | 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 |
通过观察元素之间的连续差异,可以在数组中迭代来解决这个问题。但是在PHP中,我们可以使用一些内置函数来解决这个问题。
为此,我们必须使用以下两种功能:
- range()函数:该函数用于创建任意类型的元素数组,如整数、给定范围内的字母(从低到高)i。e, list的第一个元素被认为是低的,最后一个元素被认为是高的。
- array_diff() function函数:的作用是:如果我们有一个元素数组,我们可以通过比较两个数组来找到缺少的元素。
使用两个内置函数来解决这个问题的思路是,首先使用range()函数从起始元素创建一个新的数组,然后使用max()函数创建原数组的maximum元素。然后,我们应用array_diff()函数比较新创建的数组和原始数组,从而得到原始数组中所有缺失的元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?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))); ?> |
输出
1 2 3 4 5 6 7 8 9 | Array ( [4] => 5 [5] => 6 ) Array ( [3] => 13 ) |