Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 이미 나열된 간격 제거

<시간/>

문제

2차원 배열 arr을 첫 번째이자 유일한 인수로 사용하는 JavaScript 함수입니다.

입력 배열의 각 하위 배열은 시간 간격을 지정하는 정확히 두 개의 숫자로 구성된 배열입니다.

우리의 함수는 배열의 다른 간격에 의해 커버되는 모든 간격을 제거해야 합니다. 간격 [a,b)는 c <=a 및 b <=d인 경우에만 간격 [c,d)에 포함됩니다. 우리 함수는 마침내 배열에 남아 있는 간격의 수를 반환해야 합니다.

예를 들어, 함수에 대한 입력이 -

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

그러면 출력은 다음과 같아야 합니다. -

const output = 2;

출력 설명:

간격 [5, 7]은 [3, 9]로 덮여 있으므로 제거됩니다.

예시

이에 대한 코드는 -

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

출력

콘솔의 출력은 -

2