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.