Pelaksanaan JavaScript untuk mencari jujukan nombor berturut-turut terpanjang dalam kemahiran array_javascript

WBOY
Lepaskan: 2016-05-16 16:37:38
asal
2162 orang telah melayarinya

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();

}
Salin selepas log masuk

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]
Salin selepas log masuk

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan