PHP Program to Find lost element from a duplicated array
Last Updated :
22 Jul, 2024
Given two arrays that are duplicates of each other except one element, that is one element from one of the array is missing, we need to find that missing element.
Examples:
Input: arr1[] = {1, 4, 5, 7, 9}
arr2[] = {4, 5, 7, 9}
Output: 1
1 is missing from second array.
Input: arr1[] = {2, 3, 4, 5}
arr2[] = {2, 3, 4, 5, 6}
Output: 6
6 is missing from first array.
One simple solution is to iterate over arrays and check element by element and flag the missing element when an unmatched element is found, but this solution requires linear time oversize of the array.
Another efficient solution is based on a binary search approach. Algorithm steps are as follows:
- Start a binary search in a bigger array and get mid as (lo + hi) / 2
- If the value from both arrays is the same then the missing element must be in the right part so set lo as mid
- Else set hi as mid because the missing element must be in the left part of the bigger array if mid-elements are not equal.
- A special case is handled separately as for single element and zero elements array, the single element itself will be the missing element.
If the first element itself is not equal then that element will be the missing element./li>
Below is the implementation of the above steps
PHP
<?php
// PHP program to find missing
// element from same arrays
// (except one missing element)
// Function to find missing
// element based on binary
// search approach. arr1[]
// is of larger size and
// N is size of it. arr1[]
// and arr2[] are assumed
// to be in same order.
function findMissingUtil($arr1, $arr2, $N)
{
// special case, for only
// element which is
// missing in second array
if ($N == 1)
return $arr1[0];
// special case, for first
// element missing
if ($arr1[0] != $arr2[0])
return $arr1[0];
// Initialize current
// corner points
$lo = 0;
$hi = $N - 1;
// loop until lo < hi
while ($lo < $hi)
{
$mid = ($lo + $hi) / 2;
// If element at mid indices are
// equal then go to right subarray
if ($arr1[$mid] == $arr2[$mid])
$lo = $mid;
else
$hi = $mid;
// if lo, hi becomes
// contiguous, break
if ($lo == $hi - 1)
break;
}
// missing element will be
// at hi index of
// bigger array
return $arr1[$hi];
}
// This function mainly
// does basic error checking
// and calls findMissingUtil
function findMissing($arr1, $arr2,
$M, $N)
{
if ($N == $M - 1)
echo "Missing Element is "
, findMissingUtil($arr1,
$arr2, $M) ;
else if ($M == $N - 1)
echo "Missing Element is "
, findMissingUtil($arr2,
$arr1, $N);
else
echo "Invalid Input";
}
// Driver Code
$arr1 = array(1, 4, 5, 7, 9);
$arr2 = array(4, 5, 7, 9);
$M = count($arr1);
$N = count($arr2);
findMissing($arr1, $arr2, $M, $N);
// This code is contributed by anuj_67.
?>
OutputMissing Element is 1
Time Complexity: O(logM + logN), where M and N represents the size of the given two arrays.
Auxiliary Space: O(1), no extra space is required, so it is a constant.
What if input arrays are not in the same order?
In this case, the missing element is simply XOR of all elements of both arrays. Thanks to Yolo Song for suggesting this.
PHP
<?php
// PHP program to find missing
// element from one array
// such that it has all elements
// of other array except
// one. Elements in two arrays
// can be in any order.
// This function mainly does
// XOR of all elements
// of arr1[] and arr2[]
function findMissing($arr1, $arr2,
$M, $N)
{
if ($M != $N - 1 && $N != $M - 1)
{
echo "Invalid Input";
return;
}
// Do XOR of all element
$res = 0;
for ($i = 0; $i < $M; $i++)
$res = $res ^ $arr1[$i];
for ($i = 0; $i < $N; $i++)
$res = $res ^ $arr2[$i];
echo "Missing element is ", $res;
}
// Driver Code
$arr1 = array(4, 1, 5, 9, 7);
$arr2 = array(7, 5, 9, 4);
$M = sizeof($arr1);
$N = sizeof($arr2);
findMissing($arr1, $arr2, $M, $N);
// This code is contributed by aj_36
?>
OutputMissing element is 1
Time Complexity: O(M + N), where M and N represents the size of the given two arrays.
Auxiliary Space: O(1), no extra space is required, so it is a constant.
Please refer complete article on Find lost element from a duplicated array for more details!
Similar Reads
Find lost element from a duplicated array Given two arrays that are duplicates of each other except one element, that is one element from one of the array is missing, we need to find that missing element. Examples: Input: arr1[] = {1, 4, 5, 7, 9} arr2[] = {4, 5, 7, 9}Output: 11 is missing from second array.Input: arr1[] = {2, 3, 4, 5} arr2[
15+ min read
Javascript Program for Find lost element from a duplicated array Given two arrays that are duplicates of each other except one element, that is one element from one of the array is missing, we need to find that missing element.Examples: Input: arr1[] = {1, 4, 5, 7, 9} arr2[] = {4, 5, 7, 9}Output: 11 is missing from second array.Input: arr1[] = {2, 3, 4, 5} arr2[]
4 min read
PHP | Remove duplicate elements from Array You are given an Array of n-elements.You have to remove the duplicate values without using any loop in PHP and print the array. Examples: Input : array[] = {2, 3, 1, 6, 1, 6, 2, 3} Output : array ( [6] => 2 [7] => 3 [4] => 1 [5] => 6 ) Input : array[] = {4, 2, 7, 3, 2, 7, 3} Output : arr
3 min read
How to delete an Element From an Array in PHP ? To delete an element from an array means to remove a specific value or item from the array, shifting subsequent elements to the left to fill the gap. This operation adjusts the array's length accordingly, eliminating the specified element.This article discusses some of the most common methods used i
4 min read
Remove First Element from an Array in PHP Given an array, the task is to remove the first element from an array in PHP. Examples:Input: arr = [1, 2, 3, 4, 5, 6, 7]; Output: 2, 3, 4, 5, 6, 7 Input: arr = [3, 4, 5, 6, 7, 1, 2] Output: 4, 5, 6, 7, 1, 2Below are the methods to remove the first element from an array in PHP:Table of ContentUsing
3 min read
Find the Most Frequent Element in an Array in PHP Given an array, i.e. $arr, the task is to find the most frequent element in an array. There are multiple ways to solve this problem in PHP we will be going to discuss them. These problems can be used during data analysis, Web Analytics, or highly used in fraud detection. Example: Input: $array = [1,
2 min read
How to remove duplicate values from array using PHP? In this article, we will discuss removing duplicate elements from an array in PHP. We can get the unique elements by using array_unique() function. This function will remove the duplicate values from the array.Syntax:array array_unique($array, $sort_flags);Note: The keys of the array are preserved i
4 min read
PHP Second most frequent element in an array Given an array we have to find the second most frequent element present in it. Examples: Input : array(3, 3, 4, 5, 5, 5, 9, 8, 8, 8, 8, 8); Output : Second most frequent element is: 5 Input : array("geeks", "for", "geeks"); Output : Second most frequent element is: for Here are some common approache
4 min read
How to get elements in reverse order of an array in PHP ? An array is a collection of elements stored together. Every element in an array belong to a similar data type. The elements in the array are recognized by their index values. The elements can be subjected to a variety of operations, including reversal. There are various ways to reverse the elements
4 min read
PHP | Deleting an element from array using array_diff() Given an array, we have to delete an element from that array using the array_diff() function in PHP.Examples:Input : $arr = array(2, 8, 9, 7, 6, 5); $arr = array_diff($arr, array(9)); Output : Array ( [0] => 2 [1] => 8 [3] => 7 [4] => 6 [5] => 5 ) Input : $arr = array("shubham", "aksh
2 min read