LeetCode OJ 56. Merge Intervals 贪心法求解
2016-03-01 20:05
260 查看
题目链接:https://leetcode.com/problems/merge-intervals/
My Submissions
Question
Total Accepted: 60386 Total
Submissions: 244495 Difficulty: Hard
Given a collection of intervals, merge all overlapping intervals.
For example,
Given
return
Subscribe to see which companies asked this question
Show Tags
Show Similar Problems
Have you met this question in a real interview?
Yes
No
Discuss
给出一个区间数组,要求将重叠的区间合并。是个hard级别的题目,但个人觉得很easy。
显然greedy求解。将所有的区间按start排序,start相同则以end排序。然后从左向右逐个合并。注意一个边界条件,即,左边的大区间包含了右边的小区间。
我的AC代码
56. Merge Intervals
My SubmissionsQuestion
Total Accepted: 60386 Total
Submissions: 244495 Difficulty: Hard
Given a collection of intervals, merge all overlapping intervals.
For example,
Given
[1,3],[2,6],[8,10],[15,18],
return
[1,6],[8,10],[15,18].
Subscribe to see which companies asked this question
Show Tags
Show Similar Problems
Have you met this question in a real interview?
Yes
No
Discuss
给出一个区间数组,要求将重叠的区间合并。是个hard级别的题目,但个人觉得很easy。
显然greedy求解。将所有的区间按start排序,start相同则以end排序。然后从左向右逐个合并。注意一个边界条件,即,左边的大区间包含了右边的小区间。
我的AC代码
public class MergeIntervals { public List<Interval> merge(List<Interval> intervals) { if (intervals == null || intervals.size() <= 1) { return intervals; } Collections.sort(intervals, new Comparator<Interval>() { @Override public int compare(Interval o1, Interval o2) { int r = o1.start - o2.start; if (r != 0) return r; return o1.end - o2.end; } }); List<Interval> r = new ArrayList<Interval>(); Interval in = intervals.get(0); for (int i = 1; i < intervals.size(); i++) { Interval cur = intervals.get(i); if (cur.start <= in.end && in.end <= cur.end) { in.end = cur.end; } else if(cur.start > in.end){ r.add(in); in = cur; } else if(cur.start <= in.end && in.end >= cur.end){ continue; } } r.add(in); return r; } }
相关文章推荐
- java实现单链表
- makefile中的为目标如何理解
- meta标签中的http-equiv属性使用介绍
- 非关系型数据库NoSQL
- Activity之间的传值
- jqgrid动态列生成
- 深入理解Java异常处理机制
- JCE无限制权限策略文件
- 在CentOS6.5上安装Tomcat6
- 模板_Lucas定理
- Operating Systems: Three Easy Pieces阅读笔记(四)FILE SYSTEM- VSFC&FSCK
- android多语言支持(Locale与Configuration)
- android Service
- 使用图片拉伸resizableImageWithCapInsets
- Codeforces Round #343 (Div. 2) B
- CF630K:Indivisibility(容斥)
- Spring Autowired
- c++中string的用法积累
- 用户管理系统——查询所有用户
- 使用MapReduce访问HBase三种访问模式