一、题目内容
二、题解
解法1:
思路
区间左起点排序,然后模拟合并
代码
public class Solution { public ArrayList<Interval> merge(ArrayList<Interval> intervals) { ArrayList<Interval> ans = new ArrayList<Interval>(); if(intervals == null || intervals.isEmpty()){ return ans; } if(intervals.size() == 1){ return intervals; } Collections.sort(intervals,(a,b)->a.start-b.start); int left = 0,right = 1; Interval curInterVal = intervals.get(left); while(right<intervals.size()){ Interval rightInterval = intervals.get(right); if(canMerge(curInterVal,rightInterval)){ curInterVal = mergeInterval(curInterVal,rightInterval); right++; }else{ ans.add(curInterVal); left = right; right = left+1; curInterVal = intervals.get(left); } } ans.add(curInterVal); return ans; } private boolean canMerge(Interval inte1,Interval inte2){ //[start1,end1] [start2,end2], start1<start2 if(inte2.start<=inte1.end){ return true; } return false; } private Interval mergeInterval(Interval inte1,Interval inte2){ return new Interval(inte1.start,Math.max(inte1.end,inte2.end)); }}