[Leetcode][Easy][Merge Intervals]

很简单的一个题,1A,想清楚思路即可。

现在的关键是如何用英语很快的解题的思路说清楚,并且在写代码的过程中,也可以很流畅的用英语把思路说出来。

以后刷题的关键还是模拟面试的过程吧,15分钟之内写出bug free的代码,并和面试官可以流畅的沟通。

 1 /**
 2  * Definition for an interval.
 3  * struct Interval {
 4  *     int start;
 5  *     int end;
 6  *     Interval() : start(0), end(0) {}
 7  *     Interval(int s, int e) : start(s), end(e) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     static bool cmp(const Interval &a, const Interval &b) {
13         if (a.start == b.start) {
14             return a.end < b.end;
15         } else {
16             return a.start < b.start;
17         }
18     }
19     vector<Interval> merge(vector<Interval> &intervals) {
20         vector<Interval> mergedIntervals;
21         int n = intervals.size();
22         if (n == 0) {
23             return mergedIntervals;
24         }
25         sort(intervals.begin(), intervals.end(), cmp);
26         Interval tmp(intervals[0].start, intervals[0].end);
27         for(int i = 1; i < n; i++) {
28             if (tmp.end < intervals[i].start) {
29                 mergedIntervals.push_back(tmp);
30                 tmp.start = intervals[i].start;
31                 tmp.end = intervals[i].end;
32             } else {
33                 tmp.start = min(tmp.start, intervals[i].start);
34                 tmp.end = max(tmp.end, intervals[i].end);
35             }
36         }
37         mergedIntervals.push_back(tmp);
38         return mergedIntervals;
39     }
40 };

过了之后看了题解,发现用的是insert interval的代码。

posted @ 2014-07-07 11:48  poemqiong  阅读(274)  评论(0编辑  收藏  举报