首页 > 代码库 > [leetcode]Merge Intervals
[leetcode]Merge Intervals
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]
.
算法思路:
将intervals按照start进行排序,然后建立一个空的list,把intervals的元素逐个插入并做合并操作。
值得注意的是:如果intervals的待插入元素能与list的元素合并,则一定是与最后一个合并。think about it
【吐槽】:这是第一遍时候想到的算法,还是很不错的,单次遍历,只不过当时不会用Collections.sort()自己手动的排序了。o(╯□╰)o
1 /** 2 * Definition for an interval. 3 * public class Interval { 4 * int start; 5 * int end; 6 * Interval() { start = 0; end = 0; } 7 * Interval(int s, int e) { start = s; end = e; } 8 * } 9 */10 public class Solution {11 List<Interval> res = new ArrayList<Interval>();12 public List<Interval> merge(List<Interval> intervals) {13 if(intervals == null || intervals.size() == 0) return res;14 Collections.sort(intervals, new Comparator<Interval>(){15 public int compare(Interval a,Interval b){16 return a.start - b.start;17 }18 });19 List<Interval> list = new ArrayList<Interval>();20 list.add(intervals.get(0));21 for(int i = 1; i < intervals.size(); i++){22 Interval last = list.get(list.size() - 1);23 Interval thus = intervals.get(i);24 if(thus.start <= last.end){25 last.end = thus.end > last.end ? thus.end : last.end;26 }else{27 list.add(thus);28 }29 }30 return list;31 }32 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。