Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Dado um vetor não ordenado de inteiros, encontre a maior sequência consecutiva em ordem crescente - Exercícios Resolvidos de JavaQuantidade de visualizações: 876 vezes |
|
Pergunta/Tarefa: Dado o vetor:
// vamos declarar um vetor de inteiros não ordenado
int valores[] = {8, 3, 7, 1, 6, 2, 4, 9};
A maior sequencia consecutiva é: 4 Em todas as entrevistas que este desafio foi apresentado, o candidato foi informado de que poderia ordenar os valores antes de calcular a sequência consecutiva, o que torna o problema menos complicado. A solução apresentada a seguir usa esta abordagem:
package estudos;
import java.util.Arrays;
public class Estudos{
public static void main(String[] args) {
// vamos declarar um vetor de inteiros não ordenado
int valores[] = {8, 3, 7, 1, 6, 2, 4, 9};
// o primeiro passo é ordenar o vetor em ordem crescente
Arrays.sort(valores);
int maiorSequencia = 1; // guarda a maior sequencia
int sequenciaAtual = 1; // guarda a sequencia atual
// agora percorremos o vetor começando no segundo elemento
// e indo até o último
for (int i = 1; i < valores.length; i++) {
// o elemento atual é diferente do elemento anterior?
if(valores[i] != valores[i - 1]){
// o elemento atual é maior que o seu sucessor?
if(valores[i] == (valores[i - 1] + 1)){
sequenciaAtual++; // incrementa a sequencia atual
}
else{
// ajusta a maior sequencia
maiorSequencia = Math.max(maiorSequencia, sequenciaAtual);
sequenciaAtual = 1; // sequencia atual volta a ser 1
}
}
}
// mostra o resultado:
System.out.println("A maior sequencia consecutiva é: " +
Math.max(maiorSequencia, sequenciaAtual));
}
}
|
|
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




