Cho dãy số nguyên dạng mảng, xác định có thể được dãy tăng chặt bằng cách xóa tối đa 1 phần tử không.
Ví dụ: [1, 3, 2, 1] => false (không xóa 1 phần tử nào được). [1, 3, 2] => true (xóa 3 -> [1,2] hoặc xóa 2 -> [1,3]).
Dãy tăng chặt
Mọi số sau lớn hơn số trước (không cho phép bằng).
Cách tiếp cận
Duyệt mảng, nếu phần tử sau <= phần tử trước thì tăng biến đếm unwantedElements. Nếu biến đếm > 1 thì return false. Duyệt hết mà <=1 thì return true.
Ví dụ
const isStrictlyIncreasing = (arr) => {
let unwantedElements = 0;
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i] >= arr[i+1]) {
unwantedElements++;
if (unwantedElements > 1) {
return false;
}
}
}
return true;
};
console.log(isStrictlyIncreasing([1, 3, 2, 1]));
console.log(isStrictlyIncreasing([1, 3, 2]));Kết quả
Đầu ra trong console sẽ là:
false true