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 }