Questão 35: comunsOrd
Voltar
Defina uma função int comunsOrd (int a[], int na, int b[], int nb) que calcula quantos elementos os vetores a (com na elementos) e b (com nb elementos) têm em comum. Assuma que os vetores a e b estão ordenados por ordem crescente.
Exemplo
> int a[6] = {1, 2, 4, 6, 7, 9};
> int b[5] = {2, 5, 6, 8, 9};
> comunsOrd(a, 6, b, 5)
(int) 3
Resolução
int comunsOrd (int a[], int na, int b[], int nb) {
int i = 0, j = 0, ans = 0;
while(i < na && j < nb) {
if(a[i] == b[j]) {
ans++;
i++;
j++;
}
else if(a[i] > b[j]) j++;
else i++;
}
return ans;
}