zoukankan      html  css  js  c++  java
  • 56. Merge Intervals (JAVA)

    Given a collection of intervals, merge all overlapping intervals.

    Example 1:

    Input: [[1,3],[2,6],[8,10],[15,18]]
    Output: [[1,6],[8,10],[15,18]]
    Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
    

    Example 2:

    Input: [[1,4],[4,5]]
    Output: [[1,5]]
    Explanation: Intervals [1,4] and [4,5] are considered overlapping.

    NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.

    涉及:

    1. 数组的截取与拷贝
    2. 重写Array.sort的compare函数(注意:jdk1.7以后,必须要定义相等的情况返回0,否则会报Runtime error)
    class Solution {
        public int[][] merge(int[][] intervals) {
            if(intervals.length == 0) return intervals;
            
            Arrays.sort(intervals,0, intervals.length, new ArrayComparator());
    
            int curIndex = 0;
            for(int i = 1; i < intervals.length; i++){
                if(intervals[curIndex][1] >= intervals[i][1]){ //only reserve intervals[i-1]
                    continue;
                }
                else if(intervals[curIndex][1] >= intervals[i][0]){//integrate
                    intervals[curIndex][1] = intervals[i][1];
                }
                else{ //no interval
                    curIndex++;
                    intervals[curIndex][0] = intervals[i][0];
                    intervals[curIndex][1] = intervals[i][1];
                }
            }
            curIndex++;
            int[][] ret = new int[curIndex][2];
            System.arraycopy(intervals, 0, ret, 0, curIndex);
            
            return ret;
        }
    }
    
    class ArrayComparator implements Comparator{
        public int compare(Object o1, Object o2){
            int[] a = (int[]) o1;
            int[] b = (int[]) o2;
            if(a[0] > b[0]) return 1;//ascending order
            else if(a[0] < b[0]) return -1;
            else return 0;
        }
    }
  • 相关阅读:
    hdu 4144 状态压缩dp
    hdu 4118 树形dp
    hdu 4115 2-SAT判定
    hdu 4085 斯坦纳树
    hdu 3311 斯坦纳树
    hdu 4081 最小生成树+树形dp
    hdu 4424 并查集
    洛谷P2661信息传递
    洛谷P2746校园网
    树状数组模板
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/10906135.html
Copyright © 2011-2022 走看看