leetcode -- Merge Intervals

关键不是怎么想,而是怎么做

 [问题描述]

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].

[解题思路]

排序 + 比较

 1 bool cmp_Interval(Interval a, Interval b)
 2 {
 3     return a.start == b.start?(a.end < b.end):(a.start < b.start);
 4 }
 5 class Solution {
 6 public:
 7     vector<Interval> merge(vector<Interval> &intervals) {
 8         std::vector<Interval> ans;
 9         if (intervals.size() == 0)
10             return ans;
11         std::sort(intervals.begin(), intervals.end(), cmp_Interval);
12         ans.push_back(intervals[0]);
13         for (int i = 0; i < intervals.size(); i ++){
14             if (ans[ans.size() - 1].end >= intervals[i].start)
15                 ans[ans.size() - 1].end = std::max(ans[ans.size() - 1].end, intervals[i].end);
16             else
17                 ans.push_back(intervals[i] );
18         }
19         return ans;
20     }
21 };

 

posted on 2014-08-15 20:03  雨歌_sky  阅读(122)  评论(0编辑  收藏  举报

导航