Hard-题目22:56. Merge Intervals
来源:互联网 发布:试卷编辑软件 编辑:程序博客网 时间:2024/05/22 12:02
题目原文:
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].
题目大意:
给出区间集合,求出并集。
题目分析:
空间换时间,先开一个数组代表数轴(经反复测试开到4000就够了),然后记录下原集合中有的数,再扫一遍这个数组,记录下新的区间即可。需要注意的是有单点的情况,如果是传统oj直接给出wa还真的不知道怎么办。。。。
源码:(language:java)
public class Solution { public List<Interval> merge(List<Interval> intervals) { boolean[] x = new boolean[4000]; boolean[] dots = new boolean[4000]; int max = Integer.MIN_VALUE,min = Integer.MAX_VALUE; List<Interval> list = new ArrayList<Interval>(); for(Interval interval : intervals) { for(int i=interval.start;i<interval.end;i++) { x[i]=true; if(i<min) min=i; if(i>max) max=i; } } int i = min; while(i<=max) { if(!x[i]) { i++; continue; } int start=i,end=start; while(x[end]) end++; list.add(new Interval(start,end)); i=end; } for(Interval interval : intervals) { int start = interval.start,end = interval.end; if(start==end && !dots[interval.start]) { dots[start] = true; if(start==0 && !x[0]) list.add(new Interval(start, end)); else if(!x[start] && !x[start-1]) list.add(new Interval(start, end)); } } return list; }}
成绩:
5ms,beats 98.15%,众数15ms,18.26%
cmershen的碎碎念:
其实,本题正常的做法应该是对区间排序,自定义一个Comparator,我采用了取巧的办法,当然也是因为test case 的数据太弱了,如果数据范围不是4000而是4亿,则此方法行不通。
0 0
- Hard-题目22:56. Merge Intervals
- 【Leet Code】56. Merge Intervals---Hard
- Leetcode 56. Merge Intervals (Hard) (cpp)
- [Leetcode 56, Hard] Merge intervals
- Hard 56题 Merge Intervals
- Leetcode 56. Merge Intervals && 57. Insert Interval(Hard)
- [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
- 56. Merge Intervals
- [leetcode] 56.Merge Intervals
- 56. Merge Intervals
- **LeetCode 56. Merge Intervals
- LeetCode 56. Merge Intervals
- Hard-题目21:123. Best Time to Buy and Sell Stock III
- Docker-Swarm调度之Filters
- C# List内存分配
- linux下安装python库
- java-jstorm
- Hard-题目22:56. Merge Intervals
- Android Lint官方静态代码检查工具
- 2016年05月26日 可用host可访问google ,Facebook
- Hard-题目23:45. Jump Game II
- tju3772. Rupxup's Math Problem
- Android学习笔记-service进程间通信(二)
- Jstorm 集群搭建过程/Jstorm集群一键安装部署
- 【cxsjsx】魔兽世界(终极版)
- maven 常用插件配置详解