Computer >> Máy Tính >  >> Lập trình >> Javascript

JavaScript:Kiểm tra xem mảng có trình tự tăng dần

Cho một dãy số nguyên dưới dạng một mảng, hãy xác định xem liệu có thể có được một dãy số tăng dần hay không bằng cách loại bỏ không quá một phần tử khỏi mảng.

Dãy a0, a1, ..., an được coi là tăng nghiêm ngặt nếu a0

Ví dụ

Đối với chuỗi =[1, 3, 2, 1], đầu ra phải là -

almostIncreasingSequence(sequence) = false.

Không có một phần tử nào trong mảng này có thể bị xóa để có được một chuỗi tăng dần.

Đối với trình tự =[1, 3, 2], đầu ra phải là -

almostIncreasingSequence(sequence) = true.

Chúng ta có thể loại bỏ 3 khỏi mảng để nhận được dãy tăng dần [1, 2]. Ngoài ra, chúng ta có thể loại bỏ 2 để có được chuỗi tăng dần [1, 3].

Ví dụ

Sau đây là mã -

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));

Đầu ra

Điều này sẽ tạo ra kết quả sau trên bảng điều khiển -

true
false