首页 > 学院 > 开发设计 > 正文

435. Non-overlapping Intervals

2019-11-06 07:15:32
字体:
来源:转载
供稿:网友

经典题的变型。经典题讲的是给出一堆区间,选择最大不重叠的区间个数,而该题变型为求解最小移走的区间个数,本质就是一样的。 先对end排序,选择end最小的区间,然后移走所有重叠的区间。然后在剩下的区间中再选择end最小的区间,重复上述操作。

/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * }; */class Solution {public: static bool cmp(Interval&a,Interval&b) { if(a.end<b.end) return true; else return false; } int eraSEOverlapIntervals(vector<Interval>& intervals) { if(intervals.size()<=1) return 0; sort(intervals.begin(),intervals.end(),cmp); int count=1; int nowIndex=0; int nextIndex=1; while(nextIndex<intervals.size()) { if(intervals[nowIndex].end>intervals[nextIndex].start) nextIndex++; else { count++; nowIndex=nextIndex; nextIndex++; } } return intervals.size()-count; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表