leetcode-56. Merge Intervals
来源:互联网 发布:淘宝新手如何找货源 编辑:程序博客网 时间:2024/05/18 12:29
leetcode-56. Merge Intervals
题目:
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].
刚做这题的时候脑子抽风了,不知道为什么从后往前遍历,实际上这样稍微麻烦一些。直接从前往后就行。
这题的基本思路就是先按照start或者end排序,然后再分情况讨论相邻的interval的end或者start大小就行。
/** * 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) { Collections.sort(intervals,new Comparator<Interval>(){ @Override public int compare(Interval v1, Interval v2){ if(v1.end==v2.end) return v1.start-v2.start; return v1.end-v2.end; } });/* for(Interval I : intervals){ System.out.println(I.start+" "+I.end); }*/ for(int i = intervals.size()-1 ; i > 0 ;i--){ // System.out.println(i+" "+intervals.get(i).start+" "+intervals.get(i).end); if(intervals.get(i-1).start>intervals.get(i).start) intervals.remove(i-1); else{ if(intervals.get(i-1).end>=intervals.get(i).start){ intervals.get(i).start=intervals.get(i-1).start; intervals.remove(i-1); } } } return intervals; }}
贴一个正常思路的:
答案来源
/** * 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) { if (intervals.size() <= 1) return intervals; // Sort by ascending starting point using an anonymous Comparator Collections.sort(intervals, new Comparator<Interval>() { @Override public int compare(Interval i1, Interval i2) { return Integer.compare(i1.start, i2.start); } }); List<Interval> result = new LinkedList<Interval>(); int start = intervals.get(0).start; int end = intervals.get(0).end; for (Interval interval : intervals) { if (interval.start <= end) // Overlapping intervals, move the end if needed end = Math.max(end, interval.end); else { // Disjoint intervals, add the previous one and reset bounds result.add(new Interval(start, end)); start = interval.start; end = interval.end; } } // Add the last interval result.add(new Interval(start, end)); return result; }}
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
- leetcode sum问题
- Python+Selenium环境搭建
- 如何将React Native 项目运行在 Web 浏览器上面
- jQuery的选择器(一)
- 邮件门的迷宫 希拉里邮件数据探索
- leetcode-56. Merge Intervals
- Android开发中布局填充器的方法
- Comparable接口的实现和使用
- OPEN(SAP) UI5 学习入门系列之二: 最佳实践练习(上)
- jquery判断鼠标移动方向--版本2
- python 学习(一) 中文,字符串,以及input和raw_input区别
- Nginx模块开发之hello world
- “aapt.exe”已退出,代码为 -1073741819。
- Require.Js简介