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;
        }
    }
  • 相关阅读:
    vue 设置初始值 为null 进行文字长度判断
    js ajax传参 定义的参数和传的参数不一样
    js 删除字符串前几位字符,和删除最后一个字符
    js splice 删除数组 相邻的数据满足条件未被删掉
    js 将对象增加新键值对
    js 将数组添加key
    js 删除掉数组中的 ' '
    js 如何删除数组中指定对象及其值
    接口
    分支结构
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/10906135.html
Copyright © 2011-2022 走看看