Heim  >  Artikel  >  Web-Frontend  >  JavaScript-Implementierung zum Finden der längsten Folge aufeinanderfolgender Zahlen in einem Array_Javascript-Fähigkeiten

JavaScript-Implementierung zum Finden der längsten Folge aufeinanderfolgender Zahlen in einem Array_Javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 16:37:382147Durchsuche

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 Folge aufeinanderfolgender Zahlen ist [1, 2, 3, 4].

Die Lösung von Xiaocai:

function maxSequence(array,step){
var _array = array.slice(), //clone array
_step = 1,
_arrayTemp = [],
i = 0;

var parseLogic = {
//result container
parseResults: [],
//set value to array,what's the last array of parseResults
set: function(n){
this.parseResults[this.parseResults.length-1].push(n);
},
//get the last array from parseResults
get: function(){
return this.parseResults[this.parseResults.length-1];
},
//put a new array in parseResults
addItem: function(){
this.parseResults.push([]);
},
//sort parseResults
sortByAsc: function(){
this.parseResults.sort(function(a,b){
return a.length - b.length;
});
}
};

//check params
_step = step || _step;

//sort array by asc
_array.sort(function(a,b){
return a - b;
});

//remove repeat of data
for(i = 0;i<_array.length;i++){
if(_array[i] != _array[i+1]){
_arrayTemp.push(_array[i]);
}
}
_array = _arrayTemp.slice();
_arrayTemp = [];

//parse array
parseLogic.addItem();
for(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.set(_array[i]);
parseLogic.addItem();
}
}

//sort result
parseLogic.sortByAsc();

//get the max sequence
return parseLogic.get();

}

Anrufanweisungen:

Methodenname:

maxSequence(array,step)

Parameterbeschreibung:

Array: das Array, nach dem gesucht werden soll. notwendig.

Schritt: Schrittgröße der Sequenz (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.

Anrufbeispiel:

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]

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn