按照end从小到大的顺序排序,观察前后interval是否有重叠:
int eraseOverlapIntervals(vector<Interval>& intervals) {
sort(intervals.begin(),intervals.end(),comp);
int ans=0;
for(int i=0;i<intervals.size();)
{
int j=i+1;
while(j<intervals.size()&&intervals[j].start<intervals[i].end)
{
ans++;
j++;
}
i=j;
}
return ans;
}
static bool comp(Interval A, Interval B)
{
if(A.end != B.end)
return A.end < B.end ;
if(A.start != B.start)
return A.start < B.start;
return 1;
}
本文介绍了一种用于合并重叠区间的高效算法。该算法通过先排序后遍历的方式,有效地计算出所有重叠区间数量。具体实现中使用了自定义比较函数确保区间按结束位置进行排序,并通过循环迭代确定哪些区间发生重叠。
765

被折叠的 条评论
为什么被折叠?



