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].

思路: 每一个Interval,要判断是否有前后相交

JAVA 代码:

  1. public List<Interval> merge(List<Interval> intervals) {
  2. Comparator comparator = new MyComparator();
  3. Collections.sort(intervals,comparator);
  4. List<Interval> res = new ArrayList<Interval>();
  5. if(intervals==null) return res;
  6. int lz = intervals.size();
  7. if(lz==0) return res;
  8. int i=0;
  9. while(i<lz) {
  10. int start=intervals.get(i).start;
  11. int end=intervals.get(i).end;
  12. while(i+1<lz && intervals.get(i+1).start<=end) {
  13. end=Math.max(intervals.get(i+1).end,end);
  14. i++;
  15. }
  16. res.add(new Interval(start,end));
  17. i++;
  18. }
  19. return res;
  20. }
  21. public class MyComparator implements Comparator<Interval> {
  22. public int compare(Interval emp1, Interval emp2){
  23. return emp1.start - emp2.start;
  24. }
  25. }

可以考虑改进,不占用额外的空间。

posted @ 2014-07-04 15:00  purejade  阅读(81)  评论(0)    收藏  举报