Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

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


กำหนดลำดับของจำนวนเต็มเป็นอาร์เรย์ ให้พิจารณาว่าเป็นไปได้หรือไม่ที่จะรับลำดับที่เพิ่มขึ้นอย่างเคร่งครัดโดยนำองค์ประกอบออกจากอาร์เรย์ไม่เกินหนึ่งรายการ

ลำดับ a0, a1, ..., an ถือเป็นการเพิ่มขึ้นอย่างเคร่งครัดหาก a0

ตัวอย่าง

สำหรับซีเควนซ์ =[1, 3, 2, 1] เอาต์พุตควรเป็น −

almostIncreasingSequence(sequence) = false.

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

สำหรับซีเควนซ์ =[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