Rumah > Artikel > hujung hadapan web > Pelaksanaan JavaScript untuk mencari jujukan nombor berturut-turut terpanjang dalam kemahiran array_javascript
Tajuk asal:
Diberi urutan integer yang tidak tertib, cari jujukan terpanjang bagi nombor berturut-turut.
Contohnya:
Diberi [100, 4, 200, 1, 3, 2],
Jujukan terpanjang bagi nombor berturut-turut ialah [1, 2, 3, 4].
Penyelesaian yang diberikan oleh 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(); }
Arahan panggilan:
Nama kaedah:
MaxSequence(array,step)
Perihalan parameter:
tatasusunan: tatasusunan untuk dicari. perlu.
langkah: saiz langkah urutan (kenaikan). Pilihan, lalai ialah 1.
Nilai pulangan:
Kaedah ini tidak mengubah tatasusunan yang diluluskan, tetapi mengembalikan tatasusunan baharu yang mengandungi jujukan terbesar.
Contoh panggilan:
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]