'C/C++ How can I get unique value from 2 arrays?

I need to get the unique value from 2 int arrays

Duplicate is allowed

There is just one unique value

like :

int arr1[3]={1,2,3};
int arr2[3]={2,2,3};

and the value i want to get is :

int unique[]={1}

how can i do this? im already confused in my 'for' and 'if' this was not homework

i know how to merge 2 arrays and del duplicate values

but i alse need to know which array have the unique value

plz help me :)

and here is some code i did

int arr1[3]={1,2,3}
int arr2[3]={2,2,3}
int arrunique[1];
bool unique = true;
for (int i=0;i!=3;i++)
{

    for (int j=0;j!=3;j++)
    {
    if(arr1[i]==arr2[j])
    {
        unique=false;
        continue;
    }
    else 
    {
        unique=true;
    }
if(unique)
{
arrunique[0]=arr1[i]
break;
}
}

cout << arrunique[0];


Solution 1:[1]

Depending on your needs, you might also want to look at set_symmetric_difference() function of the standard library. However, its treatment of duplicate values makes its use a bit tricky, to say the least.

Solution 2:[2]

#include <stdio.h>
#include <stdlib.h>
int cmp ( const void *a , const void *b )
{
        return *(int *)a - *(int *)b;
}
int main()
{
int arr1[5] = {5,4,6,3,1};
int arr2[3] = {5, 8, 9};
int unique[8];

qsort(arr1,5,sizeof(arr1[0]),cmp);

printf("\n");

qsort(arr2,3,sizeof(arr2[0]),cmp);

//printf("%d", arr1[0]);
int i = 0;
int k = 0;
int j = -1;

while (i < 5 && k < 3)
{
    if(arr1[i] < arr2[k])
    {
        unique[++j] = arr1[i];
        i++;
    }
    else if (arr1[i] > arr2[k])
    {
        unique[++j] = arr2[k];
        k++;
    }
    else
    {
        i++;
        k++;
    }
}
//int len = j;
int t = 0;
if(i == 5)
{
    for(t = k; t < 3; t++)
        unique[++j] = arr2[t];
}
else
    for(t = i; t < 5; t++)
        unique[++j] = arr2[t];

for(i = 0; i <= j; i++)
    printf("%d ", unique[i]);
return 0;
}

This is my codes,though there is a good answer . I didn't realize the idea that know which array have the unique value. I also think that the right answer that you chose didn't , either.

Solution 3:[3]

Here is my version of the algorithm for finding identical elements in sorted arrays on Python in C ++, it works in a similar way

def unique_array(array0 : (int), array1 : (int)) -> (int):
index0, index1, buffer = 0, 0, []
while index0 != len(array0) and index1 != len(array1):
    if array0[index0] < array1[index1]:
        buffer.append(array0[index0])
        index0 += 1
    elif array0[index0] > array1[index1]:
        buffer.append(array1[index1])
        index1 += 1
    else:
        index0 += 1; index1 += 1
buffer.extend(array0[index0 : len(array0)])
buffer.extend(array1[index1 : len(array1)])
return buffer

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Michael Wild
Solution 2 Hong Wei
Solution 3