LeetCode - Merge Intervals
来源:互联网 发布:女式凉鞋淘宝网 编辑:程序博客网 时间:2024/05/07 02:28
问题描述: 对1组区间合并, 例如[2,4]和[3,6],则合并为[2,6]
实现思路:
1.对区间的最小值进行排序(O(N* Log N))
2.遍历,分情况进行合并,去重,添加到结果集(O(N²))
对于两个区间的关系,一共分4种情况,注释里面已经注明。
实现代码:
public IList<Interval> Merge(IList<Interval> intervals) {if(intervals == null || intervals.Count == 0){return new List<Interval>();}var result = new List<Interval>();intervals = intervals.OrderBy(s=>s.start).ToList();var len = intervals.Count;for(var i = 0;i < len; i++){// - add or merge into resultbool merged = false;foreach(var r in result){// |-------| : r// |---| : intervals[i]if(r.end < intervals[i].start){// no interset continue;}// |-------| : r// |---| : intervals[i]else if(r.end == intervals[i].start){r.end = intervals[i].end;merged = true;break;}// |------------------| : r// |-----| : intervals[i]else if(r.end >= intervals[i].end){// do nothingmerged = true;break;}// |--------| : r// |--------| : intervals[i]else if(r.end < intervals[i].end){r.end = intervals[i].end;merged = true;break;}}if(!merged){result.Add(intervals[i]);}}return result;}
0 0
- 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
- LeetCode | Merge Intervals
- Handler功能
- Mac系统下一些终端指令的操作
- iOS应用程序生命周期
- 英飞凌 DAVE™ 4.1.2 SDK 开发app学习笔记——什么是DAVE APP?
- Linux 目录管理
- LeetCode - Merge Intervals
- 脏读、不可重复读和虚读
- iOS之@selector的函数传递多个参数
- jQuery解决引用多个JavaScript库引起的$命名冲突的问题
- 数据库基础知识
- LeetCode - Shortest Palindrome (KMP)
- ssh协议是什么,有什么优点?
- 编程之美读书笔记_3.8 求二叉树中节点的最大距离
- 网络号与主机号的计算以及子网的划分