0
点赞
收藏
分享

微信扫一扫

【LeetCode 56】合并区间

小时候是个乖乖 2022-01-04 阅读 43
leetcode
	public int[][] merge(int[][] intervals) {
        if (intervals.length == 0) {
            return new int[0][2];
        }
        
        Arrays.sort(intervals, new Comparator<int[]>() {
            public int compare(int[] interval1, int[] interval2) {
                return interval1[0] - interval2[0];
            }
        });
        
        List<int[]> merged = new ArrayList<int[]>();
        for (int i = 0; i < intervals.length; ++i) {
            int L = intervals[i][0], R = intervals[i][1]; 
            if (merged.size() == 0 || merged.get(merged.size() - 1)[1] < L) { // 当前节点和前一个节点之间是独立的
                merged.add(new int[]{L, R});
            } else { // 当前节点和之前的节点有重合
                merged.get(merged.size() - 1)[1] = Math.max(merged.get(merged.size() - 1)[1], R); 
            }
        }

        return merged.toArray(new int[merged.size()][]);
    }
举报

相关推荐

0 条评论