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

Xóa các khoảng đã được liệt kê trong JavaScript

Vấn đề

Hàm JavaScript nhận mảng 2-D, arr, làm đối số đầu tiên và duy nhất.

Mỗi mảng con của mảng đầu vào của chúng tôi là một mảng có đúng hai số, xác định một khoảng thời gian.

Hàm của chúng ta sẽ loại bỏ tất cả các khoảng bị che bởi một khoảng khác trong mảng arr. Khoảng [a, b) được bao phủ bởi khoảng [c, d) nếu và chỉ khi c <=a và b <=d. Hàm của chúng ta cuối cùng sẽ trả về số khoảng thời gian còn lại trong mảng.

Ví dụ:nếu đầu vào của hàm là -

const arr = [
   [2, 5],
   [5, 7],
   [3, 9]
];

Sau đó, đầu ra phải là -

const output = 2;

Giải thích đầu ra:

Khoảng [5, 7] được bao phủ bởi [3, 9], do đó nó bị xóa.

Ví dụ

Mã cho điều này sẽ là -

const arr = [
   [2, 5],
   [5, 7],
   [3, 9]
];
const removeCovered = (arr = []) => {
   arr.sort(([a, b], [c, d]) => (a === c ? d - b : a - c));
   let last = arr[0];
   let count = arr.length;
   for(let i = 1; i < arr.length; i++){
      const [a, b] = last;
      const [c, d] = arr[i];
      if(c >= a && d <= b){
         count -= 1;
      }else{
         last = arr[i];
      };
   };
   return count;
};
console.log(removeCovered(arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

2