🚀题目
leetcode原题链接
给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。
示例 1: 输入: intervals = [[1,2],[2,3],[3,4],[1,3]] 输出: 1 解释: 移除 [1,3] 后,剩下的区间没有重叠。
示例 2: 输入: intervals = [ [1,2], [1,2], [1,2] ] 输出: 2 解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。
示例 3: 输入: intervals = [ [1,2], [2,3] ] 输出: 0 解释: 你不需要移除任何区间,因为它们已经是无重叠的了。
提示: 1 <= intervals.length <= 105 intervals[i].length == 2 -5 * 104 <= starti < endi <= 5 * 104
💥leetcode代码模板
var eraseOverlapIntervals = function(intervals) {
};
🚀思路
这道题其实可以使用和【leetcode】452. 用最少数量的箭引爆气球一样的思路
- 将数组按照每个元素的左边界从小到大排序,如果左边界一样大,那就按照右边界从小到大排序。
- 弹出排序后数组的最后一个元素的左边界
tmp ,将tmp与此时数组的最后一个元素的右边界比较,有两种情况:
tmp 小于该右边界,说明重合,将最后一个元素弹出,并且删除数量加一tmp 大于等于该右边界,说明不重合,不做操作进入下一循环。
💻代码
var eraseOverlapIntervals = function(intervals) {
intervals.sort((a,b) => {
if(a[0] === b[0]) return a[1] - b[1]
return a[0] - b[0]
})
let ans = 0
while(intervals.length){
let tmp = intervals.pop()[0]
while(intervals.length && tmp < intervals[intervals.length - 1][1]){
intervals.pop()
ans++
}
}
return ans
};
?
我
是
c
o
n
e
r
,
请
别
关
注
我
的
专
栏
,
本
系
列
文
章
为
个
人
刷
题
记
录
(
偷
偷
自
己
卷
🤤
)
:
\textcolor{green}{我是coner,请别关注我的专栏,本系列文章为个人刷题记录(偷偷自己卷🤤):}
我是coner,请别关注我的专栏,本系列文章为个人刷题记录(偷偷自己卷🤤):leetcode题解js
?
每
天
早
上
更
新
3
道
l
e
e
t
c
o
d
e
题
目
的
j
s
题
解
🚀
🚀
🚀
\textcolor{green}{每天早上更新3道leetcode题目的js题解🚀🚀🚀}
每天早上更新3道leetcode题目的js题解🚀🚀🚀
|