Leetcode Merge Intervals 模拟
来源:互联网 发布:取消手机自动连接数据 编辑:程序博客网 时间:2024/06/06 02:26
思路:
先根据start值排序,然后两两merge,每一次的merge,将无用的那个区间的start值大于end值,最后delete这样的非法区间。
时间复杂度O(NlogN),空间复杂度O(N)。
/** * 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: void quick_sort(vector<Interval> &array, int left, int right) { if(left < right) { int i = left; int j = right; Interval x = array[i]; while(i < j) { while(i < j && array[j].start >= x.start) { --j; } if(i < j) { swap(array[i], array[j]); ++i; } while(i < j && array[i].start < x.start) { ++i; } if(i < j) { swap(array[i], array[j]); --j; } } array[i] = x; quick_sort(array, left, i - 1); quick_sort(array, i + 1, right); } } void clear(Interval &x) { x.start = 1; x.end = 0; } vector<Interval> merge(vector<Interval>& intervals) { vector<Interval> res; if(intervals.empty()) return res; // sort quick_sort(intervals, 0, intervals.size() - 1); // merge for(int i = 0; i < intervals.size() - 1; ++i) { if(intervals[i + 1].start <= intervals[i].end) { intervals[i + 1].start = intervals[i].start; intervals[i + 1].end = intervals[i].end > intervals[i + 1].end ? intervals[i].end : intervals[i + 1].end; clear(intervals[i]); } } // delete for(int i = 0; i < intervals.size(); ++i) { if(intervals[i].end >= intervals[i].start) { res.push_back(intervals[i]); } } return res; }};
0 0
- Leetcode Merge Intervals 模拟
- LeetCode: Merge Intervals
- LeetCode Merge Intervals
- LeetCode: Merge Intervals
- [Leetcode] Merge Intervals
- leetcode 28: Merge Intervals
- Leetcode: Merge Intervals
- [LeetCode] Merge Intervals
- [LeetCode]Merge Intervals
- leetcode merge intervals
- [leetcode]Merge Intervals
- LeetCode-Merge Intervals
- [leetcode] Merge Intervals
- LeetCode - Merge Intervals
- 【leetcode】Merge Intervals
- leetcode Merge Intervals
- LeetCode Merge Intervals
- [LeetCode] Merge Intervals
- 欢迎使用CSDN-markdown编辑器
- 8天学通MongoDB——第七天 运维技术
- PHP新手推荐书籍
- Eric4下的ui文件修改后compile form报错
- 半监督学习论文整理
- Leetcode Merge Intervals 模拟
- GRE写作必备句型
- Android开发快捷键
- java注解
- easyui首页模板
- 提交IOS应用更新时遇到的错误提示!ERROR ITMS-90186/90062
- 关于editText隐藏输入键盘的方法
- 陷入思维陷阱(2)——解脱出来
- 正则表达式30分钟入门教程