2020年最后一题: 无重叠区间(js)
题目描述:
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。
注意:
可以认为区间的终点总是大于它的起点。
区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。
示例1:
输入: [ [1,2], [2,3], [3,4], [1,3] ] 输出: 1 解释: 移除 [1,3] 后,剩下的区间没有重叠。
示例2:
输入: [ [1,2], [1,2], [1,2] ] 输出: 2 解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。
示例3:
输入: [ [1,2], [2,3] ] 输出: 0 解释: 你不需要移除任何区间,因为它们已经是无重叠的了。
难度:中等
题解:
var eraseOverlapIntervals = function(intervals) { if (!intervals.length) { return 0; } //将获取到的数组按照内部数组右侧元素的大小进行排序 //例子[[1, 2],[2, 3],[1, 3],[3, 4]];,排序之后的数组是[[1,2],[2,3],[1,3],[3,4]] //排序的原因是为了方便后续的比较操作 intervals.sort((a, b) => { return a[1] - b[1]; }); console.log(intervals); //定义变量存储个数 var Count = 1; //数组长度,用于for循环 var InterLength = intervals.length; //数组中首位元素数组中右侧元素 var ReferenceEl = intervals[0][1]; for (let i = 1; i < InterLength; i++) { if (intervals[i][0] >= ReferenceEl) { Count++; ReferenceEl = intervals[i][1]; } } return InterLength - Count; };
新手理解,若有误,请各位大佬指点,Thanks♪(・ω・)ノ

浙公网安备 33010602011771号