Titre original:
Compte tenu d'une séquence d'entiers non ordonnée, trouvez la séquence la plus longue de nombres consécutifs.
Par exemple:
Donné [100, 4, 200, 1, 3, 2],
La séquence la plus longue de nombres consécutifs est [1, 2, 3, 4].
La solution donnée par Xiaocai:
Fonction MaxSequence (Array, Step) {var _Array = array.slice (), // clone array_step = 1, _ArrayTemp = [], i = 0; var parselogic = {// Result ContainerPaSeResults: [], // Définit la valeur sur le tableau, ce qui est le dernier arrivée de PARSERESULTSSETS: Fonction (n) {this.parseresults [this.parseresults.length-1] .push (n);}, // Obtenez le dernier tableau de ParseReSultsget: function () {return this.parseResults [this.paSeresults.Length-1];}, // met un nouvel tableau dans ParseReSultsaddDitem: function () {this.parseresults.push ([]);}, // Trier ParseResultsSortByasc: function () {this.parseresults.sort (fonction (a, b) {return a.length - b.length;});}}; // vérifier params_step = étape || _Step; // Trier le tableau par asc_array.sort (fonction (a, b) {return a - b;}); // supprimer la répétition de datafor (i = 0; i <_array.length; i ++) {if (_Array [i]! = _Array [i + 1]) {_ ArrayTemp. _ArrayTemp.slice (); _ ArrayTemp = []; // Parse ArrayParseLogic.Additem (); for (i = 0; i <_Array.Length; i ++) {if (_array [i] + _ Step == _Array [i + 1]) {parselogic.set (_Array [i]); Continuer;} if (_Array [i] -_ Step == _Array [i-1]) {ParsElogic.set (_Array [i]); parselogic.additem ();}} // SortinCaStaLelogic.sorTby parselogic.get ();}Instructions d'appel:
Nom de la méthode:
MaxSequence (tableau, étape)
Description du paramètre:
Tableau: le tableau à trouver. nécessaire.
Étape: étape de séquence (incrément). Facultatif, la valeur par défaut est 1.
Valeur de retour:
Cette méthode ne modifie pas le tableau passé et renvoie un nouveau tableau contenant la plus grande séquence.
Exemple d'appel:
MaxSequence ([5,7,2,4,0,3,9], 1); // retour [2,3,4,5] MaxSequence ([5,7,2,4,0,3,9], 2); // retour [5,7,9]