代码随想录算法训练营第三十天| 435. 无重叠区间 763.划分字母区间 56. 合并区间

发布时间 2023-07-12 15:45:52作者: 博二爷

 435. 无重叠区间

要求:

给了多个区间,然后找出来删掉最少的区间数,从而可以让上下的区间不重叠

换个想法:

当前节点和上一个节点如果重叠,那么我就+1,然后缩小上一个节点,如果还是跟上一个节点重叠,那么就证明这个节点也要删除

小技巧:

lamda函数不好用,每次比较的时候都会在定义一个cmp函数,需要在外部定义,更方便

代码:

 1 int eraseOverlapIntervals(vector<vector<int>>& intervals) {
 2     if (intervals.size() == 0) return 0;
 3 
 4     sort(intervals.begin(), intervals.end(), [](vector<int>a, vector<int>b) {return a[0]<b[0]; });
 5     int result = 0;
 6     
 7     for (int i = 1; i < intervals.size(); i++)
 8     {
 9         if (intervals[i][0] < intervals[i - 1][1])
10         {
11             result++;
12             intervals[i][1] = min(intervals[i][1], intervals[i - 1][1]);
13         }
14     }
15 
16     return result;
17 }