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:
La copie de code est la suivante:
fonction maxSequence (array, étape) {
var _Array = array.slice (), // array clone
_step = 1,
_ArrayTemp = [],
i = 0;
var parselogic = {
// conteneur de résultat
PARSERESULTS: [],
// définit la valeur sur le tableau, quel est le dernier tableau de parseresults
set: function (n) {
this.parseresults [this.parseresults.length-1] .push (n);
},
// Obtenez le dernier tableau de Parseresults
get: function () {
Renvoie ce.parseResults [this.parseresults.length-1];
},
// Mettez un nouveau tableau en parseresults
addItem: function () {
this.parseresults.push ([]);
},
// trier les PARSERESULTS
sortbyasc: function () {
this.parseresults.sort (fonction (a, b) {
Retour A.Length - B.Length;
});
}
};
// Vérifiez les paramètres
_step = étape || _étape;
// Trier le tableau par ASC
_array.sort (fonction (a, b) {
retourner a - b;
});
// supprimer la répétition des données
pour (i = 0; i <_array.length; i ++) {
if (_array [i]! = _array [i + 1]) {
_ArrayTemp.push (_Array [i]);
}
}
_Array = _ArrayTemp.slice ();
_ArrayTemp = [];
// A analyser le tableau
parselogic.additem ();
pour (i = 0; i <_array.length; i ++) {
if (_Array [i] + _ Step == _Array [i + 1]) {
ParsElogic.set (_Array [i]);
continuer;
}
if (_array [i] -_ étape == _Array [i-1]) {
ParsElogic.set (_Array [i]);
parselogic.additem ();
}
}
// trier le résultat
Parselogic.Sortbyasc ();
// Obtenez la séquence maximale
retourner 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 entrant 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]