Questão 31: maisFreq
Voltar
Defina uma função int maisFreq (int v[], int N)
que recebe um vetor v
com N
elementos ordenado por ordem crescente e retorna o mais frequente dos elementos do vetor. Se houver mais do que um elemento nessas condições deve retornar o que começa por aparecer no índice mais baixo.
Exemplo
> int v[6] = {1,1,2,2,2,3};
> maisFreq(v, 6)
(int) 2
Resolução
int maisFreq (int v[], int N) {
int i, freq = 1, maxFreq = 0, ans = v[0];
for(i = 1; i < N; i++) {
if(v[i] == v[i - 1]) freq++;
else {
if(freq > maxFreq) {
maxFreq = freq;
ans = v[i - 1];
}
freq = 1;
}
}
if(freq > maxFreq) {
maxFreq = freq;
ans = v[i - 1];
}
return ans;
}