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;
}