LeetCode_56---Merge Intervals
来源:互联网 发布:mp3购买推荐淘宝网 编辑:程序博客网 时间:2024/06/05 11:09
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]
.
Code:
/** * */package From41;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.LinkedList;import java.util.List;/** * @author MohnSnow * @time 2015年6月26日 下午2:38:46 * */public class LeetCode56 {/** * @param argsmengdx * -fnst */public static class Interval {intstart;intend;Interval() {start = 0;end = 0;}Interval(int s, int e) {start = s;end = e;}public String toString() {String result = "start:" + start + " end: " + end;return result;}}// Time Limit Exceededpublic static List<Interval> merge(List<Interval> intervals) {Interval temp;List<Interval> result = new LinkedList<Interval>();if (intervals.size() <= 1) {return intervals;}for (int i = intervals.size() - 1; i > 0; i--) {//复杂度太高for (int j = 0; j < i; j++) {if (intervals.get(i).start < intervals.get(j).start) {int tempInt = intervals.get(i).start;intervals.get(i).start = intervals.get(j).start;intervals.get(j).start = tempInt;tempInt = intervals.get(i).end;intervals.get(i).end = intervals.get(j).end;intervals.get(j).end = tempInt;}}}temp = new Interval(intervals.get(0).start, intervals.get(0).end);for (int i = 1; i < intervals.size(); i++) {if (temp.end >= intervals.get(i).start && temp.end < intervals.get(i).end) {temp.end = intervals.get(i).end;}if (temp.end < intervals.get(i).start) {result.add(temp);temp.start = intervals.get(i).start;//出错地方,这个地方我就先不改了temp.end = intervals.get(i).end;//出错地方,这个地方我就先不改了,造成了intervals里面的变化}}result.add(temp);return result;}//440msACpublic static List<Interval> merge1(List<Interval> intervals) {List<Interval> result = new ArrayList<Interval>();if (intervals.size() <= 1) {return intervals;}Collections.sort(intervals, new Comparator<Interval>() {//借鉴下面方式@Overridepublic int compare(Interval obj0, Interval obj1) {return obj0.start - obj1.start;}});Interval temp = null;for (int i = 0; i < intervals.size(); i++) {if (temp == null || temp.end < intervals.get(i).start) {result.add(intervals.get(i));temp = intervals.get(i);} else if (temp.end >= intervals.get(i).start && temp.end < intervals.get(i).end) {temp.end = intervals.get(i).end;}}return result;}//https://leetcode.com/discuss/33434/a-clean-java-solution//提供了一种排序方式public static List<Interval> merge2(List<Interval> intervals) {Collections.sort(intervals, new Comparator<Interval>() {@Overridepublic int compare(Interval obj0, Interval obj1) {return obj0.start - obj1.start;}});List<Interval> ret = new ArrayList<>();Interval prev = null;for (Interval inter : intervals) {if (prev == null || inter.start > prev.end) {ret.add(inter);prev = inter;} else if (inter.end > prev.end) {// Modify the element already in listprev.end = inter.end;}}return ret;}public static void main(String[] args) {Interval a = new Interval(1, 4);Interval b = new Interval(5, 6);//Interval c = new Interval(9, 19);//Interval d = new Interval(15, 18);List<Interval> intervals = new LinkedList<Interval>();intervals.add(a);intervals.add(b);//intervals.add(c);//intervals.add(d);System.out.println("merge: " + merge(intervals));System.out.println("merge1: " + merge1(intervals));System.out.println("merge2: " + merge2(intervals));}}
0 0
- LeetCode_56---Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- merge intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- 自定义 URL Scheme 完全指南
- java switch结构漏写break的后果
- UITextFiedl 左侧设置小图标 leftview
- ESXi 5 调整虚拟磁盘大小(完整版)
- 利用游标update数据
- LeetCode_56---Merge Intervals
- Longest Valid Parentheses 最长的连续匹配数
- B. Ohana Cleans Up(Codeforces Round #309 (Div. 2))
- 第十二届浙江省大学生程序设计大赛-Demacia of the Ancients
- IE中js不兼容new Date()带参
- char 与 unsigned char的本质区别
- html中锚点的使用
- Deep Learning(深度学习)学习笔记整理系列之(七)
- 学习日记-property的参数解析