很简单的一个题,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的代码。