zmar Posted March 21, 2015 at 04:59 PM Report Share #579938 Posted March 21, 2015 at 04:59 PM 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 More sharing options...
thoga31 Posted March 21, 2015 at 05:51 PM Report Share #579941 Posted March 21, 2015 at 05:51 PM (edited) 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 March 21, 2015 at 05:51 PM by thoga31 Knowledge is free! Link to comment Share on other sites More sharing options...
zmar Posted March 21, 2015 at 08:14 PM Author Report Share #579961 Posted March 21, 2015 at 08:14 PM Obrigado, ja esta a funcionar, pensei que fosse mais complicado 😛 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now