#include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param intervals int整型vector<vector<>> * @return int整型vector<vector<>> */ vector<vector<int> > mergeTimeIntervals(vector<vector<int> >& intervals) { // write code here sort(intervals.begin(), intervals.end()); vector<vector<int> >ve; int n = intervals.size(); int l = intervals[0][0], r = intervals[0][1]; for (int i = 1; i < n; ++i) { if (r < intervals[i][0]) { ve.push_back({l, r}); l = intervals[i][0], r = intervals[i][1]; } else { l = min(l, intervals[i][0]); r = max(r, intervals[i][1]); } } ve.push_back({l, r}); return ve; } };
一、题目考察的知识点
模拟+贪心
二、题目解答方法的文字分析
首先是一定要排序的
依次遍历如果当前区间的右区间小于下一个区间的左区间,那么就是一个合理的覆盖区间,如果不是那么区间的左右区间就是遍历区间的最小的左和最大的右区间
三、本题解析所用的编程语言
c++