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:
function maxSequence (array, step) {var _array = array.slice (), // clone array_step = 1, _arraytemp = [], i = 0; var parselogic = {// Result contenederParSeresUts: [], // Establecer valor para la matriz, cuál es la última matriz de parseressultsset: función (n) {this.parseresults [this.parseresults.length-1] .push (n);}, // Obtenga la última matriz de parseresultsget: function () {return this.parseresults [this.parseresults.length-1];}, // coloca una nueva matrice en parseresSadditem: function () {this.parseresults.push ([]);}, // clasifica parseresultssortByasc: function () {this.parseresults.sort (function (a, b) {return a.length - b.length;});}}; // verifique params_step = step ||| _step; // clasificar matriz por asc_array.sort (function (a, b) {return a - b;}); // elimina la repetición de datafor (i = 0; i <_array.length; i ++) {if (_array [i]! = _array [i+1]) {_ arraytemp.push (_array [I]); _arraytemp.slice (); _ arraytemp = []; // parse arrayparselogic.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 ();}} // sorteparselogic.sortbyasc (); 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 aprobada 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]