zoukankan      html  css  js  c++  java
  • LeetCode——合并区间

    Q:给出一个区间的集合,请合并所有重叠的区间。

    示例 1:
    输入: [[1,3],[2,6],[8,10],[15,18]]
    输出: [[1,6],[8,10],[15,18]]
    解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
    示例 2:
    输入: [[1,4],[4,5]]
    输出: [[1,5]]
    解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

    A:
    按start排序,对于⼏个相交区间合并后的结果区间 x , x.start ⼀定是这些相交区间中 start 最⼩的, x.end ⼀定是这些相交区间中 end 最⼤的。

    代码:

        public int[][] merge(int[][] intervals) {
            if (intervals.length <= 1)
                return intervals;
            Arrays.sort(intervals, new Comparator<int[]>() {
                @Override
                public int compare(int[] t1, int[] t2) {
                    if (t1[0] < t2[0]) {
                        return -1;
                    } else if (t1[0] == t2[0])
                        return 0;
                    else
                        return 1;
                }
            });
            int n = intervals.length;
            ArrayList<int[]> array = new ArrayList<>();
            int[] newinterval = intervals[0];
            for (int i = 1; i < n; i++) {
                if (newinterval[1] < intervals[i][0]) {
                    array.add(newinterval);
                    newinterval = intervals[i];
                } else {
                    newinterval[1] = Math.max(intervals[i][1], newinterval[1]);
                }
            }
            array.add(newinterval);
            int[][] result = new int[array.size()][2];
            for (int i = 0; i < array.size(); i++) {
                result[i] = array.get(i);
            }
            return result;
        }
    
  • 相关阅读:
    LInux SSH远程文件/目录传输命令scp(转载)
    Linux系统时间设置(转载)
    Linux重置mysql密码(转载)
    快速输入(简单版)
    bitset
    或 、与、异或
    bitset
    Java面向对象3(K~O)
    Java面向对象2(G~J)
    数据结构实验之栈与队列六:下一较大值(二)(SDUT 3333)
  • 原文地址:https://www.cnblogs.com/xym4869/p/12711454.html
Copyright © 2011-2022 走看看