描述
给定一些区间,找到需要移除的最小区间数,以使其余的区间不重叠。
- 可以假设区间的终止点一定比起始点大。
- 区间[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
解释: 不需要移除任何区间因为本身就没有任何区间重合。
int eraseOverlapIntervals(vector<Interval> &intervals) {
// write your code here
if (intervals.size() == 0)
{
return 0;
}
sort(intervals.begin(), intervals.end(), cmp);
int x = intervals[0].end;
int count = 0;
for (int i = 1; i<intervals.size(); i++)
{
if (intervals[i].start < x)
{
count++;
}
else
{
x = intervals[i].end;
}
}
return count;
}