กำหนดลำดับของจำนวนเต็มเป็นอาร์เรย์ ให้พิจารณาว่าเป็นไปได้หรือไม่ที่จะรับลำดับที่เพิ่มขึ้นอย่างเคร่งครัดโดยนำองค์ประกอบออกจากอาร์เรย์ไม่เกินหนึ่งรายการ
ลำดับ a0, a1, ..., an ถือเป็นการเพิ่มขึ้นอย่างเคร่งครัดหาก a0
สำหรับซีเควนซ์ =[1, 3, 2, 1] เอาต์พุตควรเป็น −
ไม่มีองค์ประกอบใดในอาร์เรย์นี้ที่สามารถลบออกเพื่อให้ได้ลำดับที่เพิ่มขึ้นอย่างเคร่งครัด
สำหรับซีเควนซ์ =[1, 3, 2] ผลลัพธ์ควรเป็น −
เราสามารถลบ 3 ออกจากอาร์เรย์เพื่อรับลำดับที่เพิ่มขึ้นอย่างเคร่งครัด [1, 2] อีกวิธีหนึ่ง เราสามารถลบ 2 ออกเพื่อให้ได้ลำดับที่เพิ่มขึ้นอย่างเคร่งครัด [1, 3]
ต่อไปนี้เป็นรหัส -
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้บนคอนโซล -ตัวอย่าง
almostIncreasingSequence(sequence) = false.
almostIncreasingSequence(sequence) = true.
ตัวอย่าง
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