• 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;
        }
    
  • 相关阅读:
    ASP脚本获取服务器全部参数列表说明
    HTML基础教程
    HTML5代码大全
    CSS 属性大全
    Web前端单词大全
    css常用代码大全
    曾国藩:诚敬静谨恒!
    鼠标经过显示菜单
    月入3000+项目
    右侧菜单显示隐藏
  • 原文地址:https://www.cnblogs.com/xym4869/p/12711454.html
Copyright © 2020-2023  润新知