Given two sorted arrays of distinct elements, we need to print those elements from both arrays that are not common. The output should be printed in sorted order.
Examples :
Input : arr1[] = {10, 20, 30} arr2[] = {20, 25, 30, 40, 50} Output : 10 25 40 50 We do not print 20 and 30 as these elements are present in both arrays. Input : arr1[] = {10, 20, 30} arr2[] = {40, 50} Output : 10 20 30 40 50
The idea is based on merge process of merge sort. We traverse both arrays and skip common elements.
Implementation:
C++
// C++ program to find uncommon elements of // two sorted arrays #include <bits/stdc++.h> using namespace std;
void printUncommon( int arr1[], int arr2[],
int n1, int n2)
{ int i = 0, j = 0, k = 0;
while (i < n1 && j < n2) {
// If not common, print smaller
if (arr1[i] < arr2[j]) {
cout << arr1[i] << " " ;
i++;
k++;
}
else if (arr2[j] < arr1[i]) {
cout << arr2[j] << " " ;
k++;
j++;
}
// Skip common element
else {
i++;
j++;
}
}
// printing remaining elements
while (i < n1) {
cout << arr1[i] << " " ;
i++;
k++;
}
while (j < n2) {
cout << arr2[j] << " " ;
j++;
k++;
}
} // Driver code int main()
{ int arr1[] = {10, 20, 30};
int arr2[] = {20, 25, 30, 40, 50};
int n1 = sizeof (arr1) / sizeof (arr1[0]);
int n2 = sizeof (arr2) / sizeof (arr2[0]);
printUncommon(arr1, arr2, n1, n2);
return 0;
} |
Java
// Java program to find uncommon elements // of two sorted arrays import java.io.*;
class GFG {
static void printUncommon( int arr1[],
int arr2[], int n1, int n2)
{
int i = 0 , j = 0 , k = 0 ;
while (i < n1 && j < n2) {
// If not common, print smaller
if (arr1[i] < arr2[j]) {
System.out.print(arr1[i] + " " );
i++;
k++;
}
else if (arr2[j] < arr1[i]) {
System.out.print(arr2[j] + " " );
k++;
j++;
}
// Skip common element
else {
i++;
j++;
}
}
// printing remaining elements
while (i < n1) {
System.out.print(arr1[i] + " " );
i++;
k++;
}
while (j < n2) {
System.out.print(arr2[j] + " " );
j++;
k++;
}
}
// Driver code
public static void main(String[] args)
{
int arr1[] = { 10 , 20 , 30 };
int arr2[] = { 20 , 25 , 30 , 40 , 50 };
int n1 = arr1.length;
int n2 = arr2.length;
printUncommon(arr1, arr2, n1, n2);
}
} // This code is contributed by vt_m |
Python3
# Python 3 program to find uncommon # elements of two sorted arrays def printUncommon(arr1, arr2, n1, n2) :
i = 0
j = 0
k = 0
while (i < n1 and j < n2) :
# If not common, print smaller
if (arr1[i] < arr2[j]) :
print ( arr1[i] , end = " " )
i = i + 1
k = k + 1
elif (arr2[j] < arr1[i]) :
print ( arr2[j] , end = " " )
k = k + 1
j = j + 1
# Skip common element
else :
i = i + 1
j = j + 1
# printing remaining elements
while (i < n1) :
print ( arr1[i] , end = " " )
i = i + 1
k = k + 1
while (j < n2) :
print ( arr2[j] , end = " " )
j = j + 1
k = k + 1
# Driver code arr1 = [ 10 , 20 , 30 ]
arr2 = [ 20 , 25 , 30 , 40 , 50 ]
n1 = len (arr1)
n2 = len (arr2)
printUncommon(arr1, arr2, n1, n2) # This code is contributed # by Nikita Tiwari. |
C#
// C# program to find uncommon elements // of two sorted arrays using System;
class GFG {
static void printUncommon( int []arr1,
int []arr2,
int n1,
int n2)
{
int i = 0, j = 0, k = 0;
while (i < n1 && j < n2)
{
// If not common, print smaller
if (arr1[i] < arr2[j])
{
Console.Write(arr1[i] + " " );
i++;
k++;
}
else if (arr2[j] < arr1[i])
{
Console.Write(arr2[j] + " " );
k++;
j++;
}
// Skip common element
else
{
i++;
j++;
}
}
// printing remaining elements
while (i < n1)
{
Console.Write(arr1[i] + " " );
i++;
k++;
}
while (j < n2)
{
Console.Write(arr2[j] + " " );
j++;
k++;
}
}
// Driver Code
public static void Main()
{
int []arr1 = {10, 20, 30};
int []arr2 = {20, 25, 30, 40, 50};
int n1 = arr1.Length;
int n2 = arr2.Length;
printUncommon(arr1, arr2, n1, n2);
}
} // This code is contributed by Sam007 |
PHP
<?php // PHP program to find uncommon // elements of two sorted arrays function printUncommon( $arr1 , $arr2 ,
$n1 , $n2 )
{ $i = 0;
$j = 0;
$k = 0;
while ( $i < $n1 && $j < $n2 )
{
// If not common, print smaller
if ( $arr1 [ $i ] < $arr2 [ $j ])
{
echo $arr1 [ $i ] . " " ;
$i ++;
$k ++;
}
else if ( $arr2 [ $j ] < $arr1 [ $i ])
{
echo $arr2 [ $j ] . " " ;
$k ++;
$j ++;
}
// Skip common element
else
{
$i ++;
$j ++;
}
}
// printing remaining elements
while ( $i < $n1 )
{
echo $arr1 [ $i ] . " " ;
$i ++;
$k ++;
}
while ( $j < $n2 )
{
echo $arr2 [ $j ] . " " ;
$j ++;
$k ++;
}
} // Driver code $arr1 = array (10, 20, 30);
$arr2 = array (20, 25, 30, 40, 50);
$n1 = sizeof( $arr1 ) ;
$n2 = sizeof( $arr2 ) ;
printUncommon( $arr1 , $arr2 , $n1 , $n2 );
// This code is contributed by Anuj_67 ?> |
Javascript
<script> // JavaScript program to find uncommon elements // of two sorted arrays function printUncommon(arr1,
arr2, n1, n2)
{
let i = 0, j = 0, k = 0;
while (i < n1 && j < n2) {
// If not common, print smaller
if (arr1[i] < arr2[j]) {
document.write(arr1[i] + " " );
i++;
k++;
}
else if (arr2[j] < arr1[i]) {
document.write(arr2[j] + " " );
k++;
j++;
}
// Skip common element
else {
i++;
j++;
}
}
// printing remaining elements
while (i < n1)
{
document.write(arr1[i] + " " );
i++;
k++;
}
while (j < n2)
{
document.write(arr2[j] + " " );
j++;
k++;
}
}
// Driver Code let arr1 = [ 10, 20, 30 ];
let arr2 = [ 20, 25, 30, 40, 50 ];
let n1 = arr1.length;
let n2 = arr2.length;
printUncommon(arr1, arr2, n1, n2);
// This code is contributed by susmitakundugoaldanga. </script> |
Output :
10 25 40 50
Time Complexity : O(n1 + n2)
Auxiliary Space : O(1)