Originaltitel:
Bestimmen Sie bei einer gegebenen ungeordneten Folge von ganzen Zahlen die längste Folge aufeinanderfolgender Zahlen.
Zum Beispiel:
Gegeben [100, 4, 200, 1, 3, 2],
Die längste zusammenhängende Zahlenfolge ist [1, 2, 3, 4].
Die Lösung von Xiao Cai:
Funktion maxSequence(array,step){
var _array = array.slice(), //Array klonen
_step = 1,
_arrayTemp = [],
i = 0;
var parseLogic = {
//Ergebniscontainer
ParseResults: [],
//Wert auf Array setzen, was ist das letzte Array von parseResults
set: function(n){
This.parseResults[this.parseResults.length-1].push(n);
},
//das letzte Array von parseResults abrufen
Holen Sie sich: function(){
Geben Sie this.parseResults[this.parseResults.length-1];
zurück
},
//ein neues Array in parseResults einfügen
AddItem: function(){
This.parseResults.push([]);
},
//parseResults sortieren
SortByAsc: function(){
This.parseResults.sort(function(a,b){
return a.length - b.length;
});
}
};
//Parameter prüfen
_step = Schritt ||. _step;
//Array nach Asc sortieren
_array.sort(function(a,b){
Geben Sie a - b zurück;
});
//Wiederholung der Daten entfernen
for(i = 0;i<_array.length;i ){
If(_array[i] != _array[i 1]){
_arrayTemp.push(_array[i]);
}
}
_array = _arrayTemp.slice();
_arrayTemp = [];
//Array analysieren
parseLogic.addItem();
for(i = 0;i<_array.length;i ){
If(_array[i] _step == _array[i 1]){
parseLogic.set(_array[i]);
Weiter;
}
If(_array[i]-_step == _array[i-1]){
parseLogic.set(_array[i]);
parseLogic.addItem();
}
}
//Ergebnis sortieren
parseLogic.sortByAsc();
//Erhalte die maximale Sequenz
Geben Sie parseLogic.get();
zurück
}
Aufrufanweisungen:
Methodenname:
maxSequence(array,step)
Parameterbeschreibung:
Array: Das zu durchsuchende Array. notwendig.
Schritt: Sequenzschritt (Inkrement). Optional, Standardwert ist 1.
Rückgabewert:
Diese Methode ändert das übergebene Array nicht, sondern gibt ein neues Array zurück, das die größte Sequenz enthält.
Aufrufbeispiel:
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]