Leetcode 56. Merge Intervals
来源:互联网 发布:s7200plc通讯端口设置 编辑:程序博客网 时间:2024/06/18 15:46
题目
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].
思路
先排序,然后按照顺序进行合并
测试用例
[[]]
[[1,3]]
[[1, 4] [0, 4]]
代码
package leetcodeArray;import java.util.ArrayList;import java.util.List;/** * Definition for an interval. * public class Interval { * int start; * int end; * Interval() { start = 0; end = 0; } * Interval(int s, int e) { start = s; end = e; } * } */public class Leetcode56MergeIntervals { public List<Interval> merge(List<Interval> intervals) { int N = intervals.size(); List<Interval> result = new ArrayList<Interval>(); if(N < 1){ return result; } intervals.sort((i1, i2) -> Integer.compare(i1.start, i2.start)); int start = intervals.get(0).start; int end = intervals.get(0).end; for(int i = 0; i < N; ++i){ if(intervals.get(i).start > end){ Interval temp = new Interval(start, end); result.add(temp); start = intervals.get(i).start; end = intervals.get(i).end; } else{ end = Math.max(end, intervals.get(i).end); } } Interval temp = new Interval(start, end); result.add(temp); return result; }}
结果
我的这个结果并不是很好,由于我采用了java8中的sort。后期在discussion中找到一个更好的方案,因为类的排序比数组的排序花费的时间比较多
他山之玉
public List<Interval> merge(List<Interval> intervals) { // sort start&end int n = intervals.size(); int[] starts = new int[n]; int[] ends = new int[n]; for (int i = 0; i < n; i++) { starts[i] = intervals.get(i).start; ends[i] = intervals.get(i).end; } Arrays.sort(starts); Arrays.sort(ends); // loop through List<Interval> res = new ArrayList<Interval>(); for (int i = 0, j = 0; i < n; i++) { // j is start of interval. if (i == n - 1 || starts[i + 1] > ends[i]) { res.add(new Interval(starts[j], ends[i])); j = i + 1; } } return res;}
阅读全文
0 0
- [LeetCode]56.Merge Intervals
- 56. Merge Intervals Leetcode
- LeetCode --- 56. Merge Intervals
- LeetCode 56.Merge Intervals
- [Leetcode] 56. Merge Intervals
- [leetcode] 56.Merge Intervals
- 【leetcode】56. Merge Intervals
- [leetcode] 56.Merge Intervals
- **LeetCode 56. Merge Intervals
- LeetCode 56. Merge Intervals
- leetcode 56. Merge Intervals
- 【LeetCode】56. Merge Intervals
- LeetCode 56. Merge Intervals
- 【leetcode】56. Merge Intervals
- leetcode 56. Merge Intervals
- leetcode.56. Merge Intervals
- [LeetCode] 56. Merge Intervals
- leetcode 56. Merge Intervals
- 自定义Progress进度条
- Md5加密中文的坑
- 常用集合在多线程下的问题
- MySQL ERROR 1862 (HY000)
- Oracle一些特殊用法
- Leetcode 56. Merge Intervals
- 连接Mysql
- oracle-case
- FlV(H264+AAC)格式详细分析
- irq n: nobody cared (try booting with the "irqpoll" option)
- 为什么我还在用Windows?
- 微信小程序页面跳转时传参数
- Appium+Genymotion+robotframework+python系列一:appium环境配置
- 文章标题