合并区间--排序+合并(56. 合并区间)

class Solution {
    public int[][] merge(int[][] intervals) {
       Arrays.sort(intervals,(a,b) -> a[0] - b[0]);
       List ans = new ArrayList<>();
       for(int i = 0;i < intervals.length;i++){
           if(ans.size() == 0 || intervals[i][0] > ans.get(ans.size() - 1)[1]){
               ans.add(intervals[i]);
           } //新的区间与原区间无交集 则直接加入最终区间答案
           else{ //新区间与左区间有交集 则更新左区间的右边界
               ans.get(ans.size() - 1)[1] = Math.max(intervals[i][1],ans.get(ans.size() - 1)[1]);
           }
       }
       return ans.toArray(new int[ans.size()][2]);
    }
}
/*
判断重叠:
俩数组只要左数组的右边界 >= 右数组的左边界 即可判为重叠
锐评:排序后不断更新back即可
 */

你可能感兴趣的:(算法笔记,算法)