Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

JavaScript: ตรวจสอบว่าอาร์เรย์มีลำดับเพิ่มขึ้นเกือบสมบูรณ์หรือไม่

กำหนดลำดับของจำนวนเต็มเป็นอาร์เรย์ ให้ตรวจสอบว่าสามารถได้ลำดับเพิ่มขึ้นอย่างเคร่งครัด (strictly increasing) โดยการลบองค์ประกอบออกได้ไม่เกินหนึ่งองค์ประกอบจากอาร์เรย์

ลำดับ a0, a1, ..., an ถือว่าเป็น strictly increasing หาก a0 < a1 < ... < an ลำดับที่มีเพียงหนึ่งองค์ประกอบก็ถือว่าเป็น strictly increasing เช่นกัน

ตัวอย่าง

สำหรับ sequence = [1, 3, 2, 1] ผลลัพธ์ควรเป็น:

almostIncreasingSequence(sequence) = false.

ไม่มีองค์ประกอบใดในอาร์เรย์ที่สามารถลบออกเพื่อให้ได้ลำดับเพิ่มขึ้นอย่างเคร่งครัด

สำหรับ sequence = [1, 3, 2] ผลลัพธ์ควรเป็น:

almostIncreasingSequence(sequence) = true.

เราสามารถลบ 3 ออกจากอาร์เรย์เพื่อให้ได้ลำดับ [1, 2] หรือลบ 2 เพื่อให้ได้ [1, 3]

โค้ดตัวอย่าง

const arr1 = [3, 5, 67, 98, 3];
const arr2 = [4, 3, 5, 67, 98, 3];
const almostIncreasingSequence = sequence => {
  let removed = 0;
  let i = 0;
  let prev = -Infinity;
  while (removed < 2 && i < sequence.length) {
    if (sequence[i] > prev) {
      prev = sequence[i];
    } else {
      prev = Math.min(prev, sequence[i]);
      removed++;
    }
    i++;
  }
  return removed < 2;
};
console.log(almostIncreasingSequence(arr1));
console.log(almostIncreasingSequence(arr2));

ผลลัพธ์

โค้ดนี้จะแสดงผลลัพธ์ดังต่อไปนี้บนคอนโซล:

true false