LeetCode-56. Merge Intervals

Given a collection of intervals, merge all overlapping intervals.

Example 1:

Input: [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].

Example 2:

Input: [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.

题解:

把数据排序之后遍历就行了

class Solution {
public:
  static bool cmp (Interval a, Interval b) {
    if (a.start != b.start) {
      return a.start < b.start;
    }
    else {
      return a.end < b.end;
    }
  }
 vector<Interval> merge(vector<Interval>& intervals) {
   int n = intervals.size();
    if (n == 0) {
     return intervals;
   }
   sort(intervals.begin(), intervals.end(), cmp);
   vector<Interval> ans;
   ans.push_back(intervals[0]);
   for (int i = 1; i < n; i++) {
     if (intervals[i].start <= ans.back().end) {
       ans.back().end = max(ans.back().end, intervals[i].end);
     }
     else {
       ans.push_back(intervals[i]);
     }
   }
   return ans;
 }
};

猜你喜欢

转载自blog.csdn.net/reigns_/article/details/84594213
今日推荐