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;
        }
    
  • 相关阅读:
    简单聊聊智能硬件的固件测试
    Regular进阶: 跨组件通信
    项目组建和磨合阶段常见的坑
    从需求到数据到改进,如何形成闭环
    请不要怪罪流程
    自备干货!如何有效的做竞品迭代分析
    css小点心
    java的collection集合
    java中的数组与集合相互转换
    java-增强for循环
  • 原文地址:https://www.cnblogs.com/xym4869/p/12711454.html
Copyright © 2011-2022 走看看