ชื่อต้นฉบับ:
ด้วยลำดับจำนวนเต็มที่ไม่ได้เรียงลำดับค้นหาลำดับที่ยาวที่สุดของตัวเลขติดต่อกัน
ตัวอย่างเช่น:
ให้ [100, 4, 200, 1, 3, 2]
ลำดับที่ยาวที่สุดของตัวเลขติดต่อกันคือ [1, 2, 3, 4]
โซลูชันที่ได้รับจาก Xiaocai:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นสูงสุด (อาร์เรย์, ขั้นตอน) {
var _array = array.slice (), // clone array
_step = 1,
_arrayTemp = []
i = 0;
var parselogic = {
// ผลลัพธ์คอนเทนเนอร์
Parseresults: [],
// ตั้งค่าเป็นอาร์เรย์อาร์เรย์สุดท้ายของ parseresults คืออะไร
ชุด: ฟังก์ชัน (n) {
this.parseresults [this.parseresults.length-1] .push (n);
-
// รับอาร์เรย์สุดท้ายจาก parseresults
รับ: function () {
ส่งคืนสิ่งนี้ parseresults [this.parseresults.length-1];
-
// ใส่อาร์เรย์ใหม่ใน parseresults
addItem: function () {
this.parseresults.push ([]);
-
// เรียงลำดับ parseresults
sortbyasc: function () {
this.parseresults.sort (ฟังก์ชั่น (a, b) {
return a.length - b.length;
-
-
-
// ตรวจสอบ params
_step = step || _step;
// เรียงลำดับอาร์เรย์โดย ASC
_array.sort (ฟังก์ชั่น (a, b) {
กลับ A - B;
-
// ลบข้อมูลซ้ำ
สำหรับ (i = 0; i <_array.length; i ++) {
ถ้า (_Array [i]! = _ARRAY [i+1]) {
_arrayTemp.push (_array [i]);
-
-
_array = _arrayTemp.Slice ();
_arrayTemp = [];
// Parse Array
parselogic.additem ();
สำหรับ (i = 0; i <_array.length; i ++) {
ถ้า (_Array [i]+_ step == _array [i+1]) {
parselogic.set (_array [i]);
ดำเนินการต่อ;
-
if (_array [i] -_ step == _array [i-1]) {
parselogic.set (_array [i]);
parselogic.additem ();
-
-
// เรียงลำดับผลลัพธ์
parselogic.sortbyasc ();
// รับลำดับสูงสุด
กลับ parselogic.get ();
-
คำแนะนำการโทร:
ชื่อวิธี:
Maxequence (อาร์เรย์, ขั้นตอน)
คำอธิบายพารามิเตอร์:
อาร์เรย์: จะพบอาร์เรย์ จำเป็น.
ขั้นตอน: ขั้นตอนลำดับ (เพิ่มขึ้น) ไม่บังคับเริ่มต้นคือ 1
ค่าส่งคืน:
วิธีนี้ไม่ได้เปลี่ยนอาร์เรย์ที่เข้ามาและส่งคืนอาร์เรย์ใหม่ที่มีลำดับที่ใหญ่ที่สุด
ตัวอย่างการโทร:
Maxequence ([5,7,2,4,0,3,9], 1); // return [2,3,4,5]
Maxequence ([5,7,2,4,0,3,9], 2); // return [5,7,9]