0
点赞
收藏
分享

微信扫一扫

1242 · 无重叠区间

林塬 2022-02-15 阅读 42

描述

给定一些区间,找到需要移除的最小区间数,以使其余的区间不重叠。

  1. 可以假设区间的终止点一定比起始点大。
  2. 区间[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;

}

 

举报

相关推荐

0 条评论