Jump to content

Menos frequente em array ordenado


zmar

Recommended Posts

Boa tarde, tenho o seguinte problema que não estou a conseguir resolver

tenho de retornar o elemento menos frequente num array ordenado, mas so posso percorrer o array uma vez, queria saber qual a melhor maneira para resolver isto. Eu pensei em fazer um ciclo for para percorrer o array e dentro um while para contar o numero de elementos consecutivos iguais, e ir comparando esses valores com o menor, e se for menor que o menor que eu ja tinha, trocava-se, mas estou com dificuldades em escrever isto. Acho que é esta a melhor maneira

Cumps

Link to comment
Share on other sites

Acho que é esta a melhor maneira

Se te pediram para fazer apenas com um ciclo, então talvez seja porque esse algoritmo em que estás a pensar não é a melhor maneira 😉

Uma vez que o array (v) está ordenado, aquilo que tens de fazer é saber qual o número actual (curr), quantas vezes ele já foi contabilizado (freq), qual o nº menos frequente até agora (result) e qual a sua frequência (menor).

Portanto, se curr == v, então aumentamos a frequência (freq++). Caso contrário, significa que o nº actual mudou, pelo que temos de verificar se aquele que estávamos a analisar (curr) é menos frequente até então (freq < menor ?). Em caso afirmativo, procedemos às respectivas trocas: a menor frequência muda (menor = freq) e o nº menos frequente muda (result = v[i-1]). Em qualquer dos casos, uma vez que o número mudou, vamos ter de reiniciar o contador de frequência (freq) assim como mudar o indicador do nº actual (curr = v).

Se interpretares atentamente este parágrafo que acabei de escrever, verás que tens aí essencialmente o código que necessitas. 😉

Cumprimentos.

Edited by thoga31

Knowledge is free!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.