JavaScript 中移除已列出的間隔


問題

此 JavaScript 函式的第一且唯一個引數是二維陣列 arr。

我們的輸入陣列的每個子陣列都是一個由兩個數字組成的陣列,指定了一個時間間隔。

如果且僅當 c <= a 且 b <= d 時,時間間隔 [a,b) 被時間間隔 [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

更新於: 2021-04-07

119 瀏覽次數

開始你的 職業生涯

透過完成課程來獲得認證

開始學習
廣告
© . All rights reserved.