Răspuns :
Pentru uniune:
int frecv[218];
signed char rezultat[10000];
signed char* uniune(unsigned short int n, signed char* set1, unsigned short int m, signed char* set2){
for(unsigned short int i = 0; i < n; i++)// n iteratii
frecv[set1[i] + 108]++;
for(unsigned short int i = 0; i < m; i++)// m iteratii
frecv[set2[i] + 108]++;
int k = 0;
for(short int i = -108; i <= 108; i++){// 217 iteratii - constant
if(frecv[i+108])
rezultat[k++] = i;
}
return rezultat;
//Complexitate: O(n+m)
}
Pentru intersectie:
int frecv[218];
signed char rezultat[10000];
signed char* intersectie(unsigned short int n, signed char* set1, unsigned short int m, signed char* set2){
for(unsigned short int i = 0; i < n; i++)// n iteratii
frecv[set1[i] + 108] = 1;
for(unsigned short int i = 0; i < m; i++)// m iteratii
if(frecv[set2[i] + 108] == 1)
frecv[set2[i] + 108]++;
int k = 0;
for(short int i = -108; i <= 108; i++){// 217 iteratii - constant
if(frecv[i+108] == 2)
rezultat[k++] = i;
}
return rezultat;
//Complexitate: O(n+m)
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.