Título original:
Dada uma sequência não ordenada de números inteiros, encontre a sequência mais longa de números consecutivos.
Por exemplo:
Dado [100, 4, 200, 1, 3, 2],
A sequência mais longa de números consecutivos é [1, 2, 3, 4].
A solução dada por Xiaocai:
A cópia do código é a seguinte:
função maxsequence (array, etapa) {
var _array = array.slice (), // Clone Array
_step = 1,
_arrayTemp = [],
i = 0;
var paraselogic = {
// contêiner de resultado
Parseresults: [],
// Defina o valor para a matriz, qual é a última variedade de parseresultos
SET: function (n) {
this.parseResults [this.parseResults.length-1] .push (n);
},
// Obtenha a última matriz de ParseResults
get: function () {
Retorne this.parseResults [this.parseResults.length-1];
},
// Coloque uma nova matriz em parseresultos
addItem: function () {
this.parseResults.push ([]);
},
// classificar parseresultos
SortByasc: function () {
this.parseResults.sort (função (a, b) {
retorno a.Length - B.Length;
});
}
};
// Verifique os parâmetros
_step = etapa || _etapa;
// Classificar matriz por ASC
_array.sort (função (a, b) {
retornar a - b;
});
// Remova a repetição dos dados
for (i = 0; i <_array.length; i ++) {
if (_array [i]! = _array [i+1]) {
_ArrayTemp.push (_array [i]);
}
}
_array = _arrayTemp.slice ();
_arrayTemp = [];
// Parse Array
parselogic.additem ();
for (i = 0; i <_array.length; i ++) {
if (_array [i]+_ step == _array [i+1]) {
parselogic.set (_array [i]);
continuar;
}
if (_array [i] -_ step == _array [i-1]) {
parselogic.set (_array [i]);
parselogic.additem ();
}
}
// Resultado de classificação
parselogic.sortbyasc ();
// Obtenha a sequência máxima
retornar parselogic.get ();
}
Instruções de chamada:
Nome do método:
MaxSequence (Array, Etapa)
Descrição do parâmetro:
Array: a matriz a ser encontrada. necessário.
Etapa: Etapa de sequência (incremento). Opcional, o padrão é 1.
Valor de retorno:
Este método não altera a matriz recebida e retorna uma nova matriz contendo a maior sequência.
Ligue para o exemplo:
MaxSequence ([5,7,2,4,0,3,9], 1); // retorna [2,3,4,5]
Maxsequência ([5,7,2,4,0,3,9], 2); // retorna [5,7,9]