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:
function maxsequence (array, step) {var _array = array.slice (), // clone Array_Step = 1, _arrayTemp = [], i = 0; var parselogic = {// resulta containerparseResults: [] // function (n) {this.parseResults [this.parseResults.length-1] .push (n);}, // Obtenha a última matriz de parseResultsget: function () {return this.parseResults [this.parseResults.Length-1];}, // function () {this.parseResults.push ([]);}, // classificar parseResultsSortByasc: function () {this.parseResults.sort (function (a, b) {return a.length - b.length;});}}; // verificação params_step = step || _step; // classificar matriz por asc_array.sort (function (a, b) {return a - b;}); // remova a repetição dos dadosfor (i = 0; i <_array.length; i ++) {if (_array [i]! = _) _ArrayTemp.slice (); _ ArrayTemp = []; // parse ArrayPeLoGic.additem (); para (i = 0; i <_array.length; i ++) {if (_array [i]+_ step == _array [i+1]) {parselogic.set (_array [i]); continue;} if (_array [i] -_ step == _array [i-1]) {parselogic.sset (_array [i]); parlogic.additem ();} // rating s outoulic. 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 passada 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] maxsequence ([5,7,2,4,0,3,9], 2); // retorna [5,7,9]