Originaltitel:
Finden Sie bei einer ungeordneten Abfolge von Ganzzahlen die längste Folge von aufeinanderfolgenden Zahlen.
Zum Beispiel:
Gegeben [100, 4, 200, 1, 3, 2],
Die längste Folge der aufeinanderfolgenden Zahlen ist [1, 2, 3, 4].
Die von Xiaocai angegebene Lösung:
Die Codekopie lautet wie folgt:
Funktion maxequence (Array, Schritt) {
var _array = array.lice (), // Klonarray
_step = 1,
_arrayTemp = [],
i = 0;
var parselogic = {
// Ergebnisbehälter
Parseresults: [],
// Wert auf Array einstellen, was ist das letzte Array von Parseresults
SET: Funktion (n) {
this.ParSeresults [this.parseresults.length-1] .push (n);
},
// Holen Sie sich das letzte Array von Parseresults
get: function () {
kehren Sie dies zurück.
},
// ein Neuarray in Parseresults einsetzen
AddItem: function () {
this.parseresults.push ([]);
},
// Parseresults sortieren
Sortbyasc: function () {
this.parseresults.sort (Funktion (a, b) {
return a.Length - B. Länge;
});
}
};
// Parameter überprüfen
_step = Schritt || _Schritt;
// Array sortieren nach ASC
_array.sort (Funktion (a, b) {
Rückkehr a - b;
});
// Wiederholung von Daten entfernen
für (i = 0; i <_array.length; i ++) {
if (_array [i]! = _array [i+1]) {
_arrayTemp.push (_array [i]);
}
}
_array = _arrayTemp.slice ();
_arrayTemp = [];
// Array analysieren
parselogic.additem ();
für (i = 0; i <_array.length; i ++) {
if (_array [i]+_ step == _array [i+1]) {
parselogic.set (_array [i]);
weitermachen;
}
if (_array [i] -_ step == _array [i-1]) {
parselogic.set (_array [i]);
parselogic.additem ();
}
}
// Ergebnis sortieren
parselogic.sortbyasc ();
// die maximale Sequenz abrufen
return parselogic.get ();
}
Anrufanweisungen:
Methodenname:
MaxSequence (Array, Schritt)
Parameterbeschreibung:
Array: Das zu findene Array. notwendig.
Schritt: Sequenzschritt (Inkrement). Optional, Standard ist 1.
Rückgabewert:
Diese Methode ändert das eingehende Array nicht und gibt ein neues Array zurück, das die größte Sequenz enthält.
Aufrufen Beispiel:
MaxSequence ([5,7,2,4,0,3,9], 1); // Return [2,3,4,5]
MaxSequence ([5,7,2,4,0,3,9], 2); // Return [5,7,9]