56. Merge Intervals

来源:互联网 发布:网络宣传部职责 编辑:程序博客网 时间:2024/06/11 23:38

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

  • 题目大意:给定两个interval,合并两个Interval的公共部分。

  • 思路:首先按照start从小到大排序,之后遍历Interval,找出所有>=当前start的end,并取当前的end与找到end的最大值。

  • 代码:

    /*** 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; }* }*/class Solution {  public List<Interval> merge(List<Interval> intervals) {         List<Interval> res = new ArrayList<>();      if (intervals == null || intervals.size() == 0) {          return res;      }    // 按照start从小到大排序      Collections.sort(intervals, new Comparator<Interval>() {          @Override          public int compare(Interval o1, Interval o2) {              return o1.start - o2.start;          }      });      int start = intervals.get(0).start;      int end = intervals.get(0).end;  //遍历Interval        for (Interval interval : intervals) {          if (interval.start <= end) {              end = Math.max(end, interval.end);          } else {              res.add(new Interval(start, end));              start = interval.start;              end = interval.end;          }      }      res.add(new Interval(start, end));      return res;  }}
原创粉丝点击