Сложность того, что я даю, - O(N*M + N)
.
Также обратите внимание, что это Псевдокод C И что он предоставляет различные значения.
напр. [1,1,1,2,2,4]
и [1,1,1,2,2,2,5]
Вернет [1,2]
Сложность
N*M
причина появления for
петель
+ N
причина проверки, если она уже существует в ArrayCommon[]
(размер n
в случае, если Array2[]
содержит данные, которые дублируют часть Array1[]
. Предполагается, что N - это размер меньшего массива (N
int Array1[m] = { Whatever };
int Array2[n] = { Whatever };
int ArrayCommon[n] = { };
void AddToCommon(int data)
{
//How many commons we got so far?
static int pos = 0;
bool found = false;
for(int i = 0 ; i <= pos ; i++)
{
//Already found it?
if(ArrayCommon[i] == data)
{
found = true;
}
}
if(!found)
{
//Add it
ArrayCommon[pos] = data;
pos++;
}
}
for(int i = 0 ; i < m ; i++)
{
for(int j = 0 ; j < n ; j++)
{
//Found a Common Element!
if(Array1[i] == Array2[j])
AddToCommon(Array1[i]);
}
}