删除 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