【leetcode】Merge Intervals

来源:互联网 发布:古装电影推荐 知乎 编辑:程序博客网 时间:2024/06/06 20:01

Given a collection of intervals, merge all overlapping intervals.

For example,
Given [1,3],[2,6],[8,10],[15,18],

return [1,6],[8,10],[15,18].


Accept: 20ms

#include <algorithm>bool cmp(const Interval &a, const Interval &b) {  return a.start < b.start;}/** * 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:    vector<Interval> merge(vector<Interval> &intervals) {      if (intervals.size() < 2) {        return intervals;      }      sort(intervals.begin(), intervals.end(), cmp);      vector<Interval> result(intervals.size());      result[0] = intervals[0];      int n = 0;      for (int i = 1; i < (int)intervals.size(); ++i) {        if (result[n].end >= intervals[i].start) {          if (result[n].end < intervals[i].end) {            result[n].end = intervals[i].end;          }        } else {          result[++n] = intervals[i];        }      } // for      result.resize(n + 1);      return result;    }};


0 0