[LeetCode]Merge Intervals
来源:互联网 发布:淘宝夏季情侣装 编辑:程序博客网 时间:2024/06/06 05:57
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]
.
/** * 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 Solution { public List<Interval> merge(List<Interval> intervals) { List<Interval> res = new ArrayList<>(); for(int i=0;i<intervals.size();i++){ res=insert(res,intervals.get(i)); } return res; } private List<Interval> insert(List<Interval> intervals, Interval newInterval) { List<Interval> list = new ArrayList<Interval>(); if(intervals.size()==0){ list.add(newInterval); return list; }int start = newInterval.start;int end = newInterval.end;int mstart=-1;int mend=-1;int nstart = -1;int nend = -1;for(int i=0;i<intervals.size();i++){Interval in = intervals.get(i);Interval next = null;if(i!=intervals.size()-1) {next= intervals.get(i+1);}if(in.start<=start&&start<=in.end){mstart = i;nstart = in.start;break;}else if(i!=intervals.size()-1&&in.end<start&&start<next.start){mstart = i+1;nstart = start;break;}}for(int i=0;i<intervals.size();i++){Interval in = intervals.get(i);Interval next = null;if(i!=intervals.size()-1) {next= intervals.get(i+1);}if(in.start<=end&&end<=in.end){mend = i;nend = in.end;break;}else if(i!=intervals.size()-1&&in.end<end&&end<next.start){mend = i;nend = end;break;}}if(mstart==-1&&mend ==-1){if(start>intervals.get(intervals.size()-1).end){list = intervals;list.add(newInterval);}else if(end<intervals.get(0).start){list = intervals;list.add(0, newInterval);}else{list.add(newInterval);}return list;}else if(mstart==-1){mstart = 0;nstart = start;list = intervals.subList(mend+1, intervals.size());list.add(0,new Interval(nstart,nend));return list;}else if(mend == -1){mend = list.size()-1;nend = end;list = intervals.subList(0, mstart);list.add(new Interval(nstart,nend));return list;}list.addAll(intervals.subList(0, mstart));list.add(new Interval(nstart,nend));list.addAll(intervals.subList(mend+1, intervals.size()));return list; }}
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
- 67 2.n个骰子的点数。
- 找工作--笔试面试--准备8
- bombing:cocos2d-x内存管理机制-侧重调用
- CodeForces-228A-Is your horseshoe on the other hoof?
- 基于C++的灰度值方图处理
- [LeetCode]Merge Intervals
- 【OJ】Lake Counting (Poj 2386 // hzu.acmclub.com 11448)
- hibernate配置文件中的properties元素
- CodeForces-271A-Beautiful Year
- git基本操作
- block 1
- 框架学习六:ViewPagerIndicator
- DSP是什么
- nyoj.2 括号配对问题 20141014