Título original:
Dada una secuencia desordenada de enteros, encuentre la secuencia más larga de números consecutivos.
Por ejemplo:
Dado [100, 4, 200, 1, 3, 2],
La secuencia más larga de números consecutivos es [1, 2, 3, 4].
La solución dada por Xiaocai:
La copia del código es la siguiente:
function maxSequence (array, step) {
var _array = array.slice (), // clone Array
_step = 1,
_ArrayTemp = [],
i = 0;
var parselogic = {
// contenedor de resultados
parsERESULTS: [],
// establecer el valor en la matriz, ¿cuál es la última matriz de parseresults?
establecer: function (n) {
this.Parseresults [this.parseresults.length-1] .push (n);
},
// Obtenga la última matriz de Parseresults
get: functer () {
devuelve this.parseresults [this.parseresults.length-1];
},
// Pon una nueva matriz en Parseresults
addItem: function () {
this.parseresults.push ([]);
},
// Ordena a Parseresults
sortByasc: function () {
this.parseresults.sort (function (a, b) {
return A.length - B.Length;
});
}
};
// verificar los parámetros
_step = paso || _paso;
// Matriz de clasificación de ASC
_array.sort (función (a, b) {
devolver a - b;
});
// eliminar la repetición de los datos
para (i = 0; i <_array.length; i ++) {
if (_array [i]! = _array [i+1]) {
_arraytemp.push (_Array [i]);
}
}
_Array = _ArrayTemp.Slice ();
_ArrayTemp = [];
// matriz de análisis
parselogic.additem ();
para (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 clasificación
parselogic.sortByasc ();
// Obtener la secuencia máxima
return parselogic.get ();
}
Instrucciones de llamadas:
Nombre del método:
MaxSequence (matriz, paso)
Descripción del parámetro:
Array: la matriz a encontrar. necesario.
Paso: secuencia Paso (incremento). Opcional, el valor predeterminado es 1.
Valor de retorno:
Este método no cambia la matriz entrante y devuelve una nueva matriz que contiene la secuencia más grande.
Ejemplo de llamada:
MaxSequence ([5,7,2,4,0,3,9], 1); // devolver [2,3,4,5]
MaxSequence ([5,7,2,4,0,3,9], 2); // Return [5,7,9]