首页 > 代码库 > LeetCode---Merge Intervals
LeetCode---Merge Intervals
题目链接
区间合并,贪心,需要注意边界情况,LeetCode的数据还是比较好的,这样才能写出健壮的程序。
附上代码:
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 vector<Interval> merge(vector<Interval> &intervals) {
13 typedef pair<int, int> pii;
14 vector<pii> my_pair;
15 for (unsigned int i = 0; i < intervals.size(); i++) {
16 my_pair.push_back(pii(intervals[i].start, intervals[i].end));
17 }
18 sort(my_pair.begin(), my_pair.end());
19 vector<Interval> ans;
20 //输入为空
21 if (intervals.size() == 0) {
22 return ans;
23 }
24 int beg = my_pair[0].first, ed = my_pair[0].second;
25 for (unsigned int i = 1; i < my_pair.size(); i++) {
26 if (my_pair[i].first <= ed) {
27 ed = max(my_pair[i].second, ed);
28 } else {
29 ans.push_back(Interval(beg, ed));
30 beg = my_pair[i].first;
31 ed = my_pair[i].second;
32 }
33 }
34 //处理最后一个数据
35 if (ans.size() == 0 || beg > ans[ans.size()-1].start) {
36 ans.push_back(Interval(beg, ed));
37 }
38
39 return ans;
40 }
41 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。