Judul Asli:
Diberi urutan bilangan bulat yang tidak teratur, temukan urutan terpanjang dari angka berturut -turut.
Misalnya:
Diberikan [100, 4, 200, 1, 3, 2],
Urutan terpanjang dari angka berturut -turut adalah [1, 2, 3, 4].
Solusi yang diberikan oleh Xiaocai:
Salinan kode adalah sebagai berikut:
function maxequence (array, step) {
var _Array = array.slice (), // klon array
_step = 1,
_ArrayTemp = [],
i = 0;
var parselogic = {
// wadah hasil
Parseresults: [],
// Tetapkan nilai ke array, apa array parseresult terakhir
set: function (n) {
this.parseresults [this.parseresults.length-1] .push (n);
},
// Dapatkan array terakhir dari parseresults
get: function () {
kembalikan this.parseresults [this.parseresults.length-1];
},
// Letakkan array baru di Parseresults
additem: function () {
this.parseresults.push ([]);
},
// urutkan parseresult
sortbyasc: function () {
this.parseresults.sort (function (a, b) {
return A.Length - b.length;
});
}
};
// Periksa params
_step = Langkah || _melangkah;
// urutkan array berdasarkan asc
_Array.sort (function (a, b) {
mengembalikan a - b;
});
// Hapus pengulangan data
untuk (i = 0; i <_array.length; i ++) {
if (_Array [i]! = _Array [i+1]) {
_ArrayTemp.push (_Array [i]);
}
}
_Array = _ArrayTemp.Slice ();
_ArrayTemp = [];
// parse array
parselogic.additem ();
untuk (i = 0; i <_array.length; i ++) {
if (_Array [i]+_ step == _Array [i+1]) {
parselogic.set (_array [i]);
melanjutkan;
}
if (_Array [i] -_ step == _Array [i-1]) {
parselogic.set (_array [i]);
parselogic.additem ();
}
}
// urutkan hasil
parselogic.sortbyac ();
// Dapatkan Urutan Max
return parselogic.get ();
}
Instruksi Panggilan:
Nama Metode:
MaxSequence (Array, Step)
Deskripsi Parameter:
Array: Array dapat ditemukan. diperlukan.
Langkah: Langkah Urutan (kenaikan). Opsional, default adalah 1.
Nilai pengembalian:
Metode ini tidak mengubah array yang masuk dan mengembalikan array baru yang berisi urutan 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); // kembali [5,7,9]