删除 JavaScript 中已经列出的间隔
问题
接受二维数组arr作为第一个也是唯一参数的JavaScript函数。
我们输入数组的每个子数组都是一个正好包含两个数字的数组,指定了一个时间间隔。
我们的函数应该删除数组arr中被另一个区间覆盖的所有区间。区间[a,b)被区间[c,d)覆盖,当且仅当c<=a且b<=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