zoukankan      html  css  js  c++  java
  • LeetCode--056--合并区间(java)

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

    示例 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] 可被视为重叠区间。
    TIME:O(N)
    SPACE:O(N)
     1 class Solution {
     2     public int[][] merge(int[][] intervals) {
     3         // 数据长度未达到合并操作要求
     4         if (intervals.length < 2)
     5             return intervals;
     6         //按二维数组第一位排序
     7         Arrays.sort(intervals, new Comparator<int[]>() {
     8             @Override
     9             public int compare(int[] o1, int[] o2) {
    10                 return o1[0] - o2[0];
    11             }
    12         });
    13         List<int[]> list = new ArrayList<>();
    14         //合并区间,若区间不能合则前者加入list中
    15         for (int i = 0; i < intervals.length - 1; i++) {
    16             if (intervals[i + 1][0] <= intervals[i][1]) {
    17                 intervals[i + 1][0] = intervals[i][0];
    18                 intervals[i + 1][1] = Math.max(intervals[i + 1][1], intervals[i][1]);
    19             } else {
    20                 list.add(intervals[i]);
    21             }
    22         }
    23         //最后的区间加入list中
    24         list.add(intervals[intervals.length - 1]);
    25         int[][] res = new int[list.size()][2];
    26         for (int i = 0; i < list.size(); i++) {
    27             res[i][0] = list.get(i)[0];
    28             res[i][1] = list.get(i)[1];
    29         }
    30         return res;
    31     }
    32 }

    2019-05-17 09:55:30

  • 相关阅读:
    springmvc
    POJ 3683 Priest John's Busiest Day
    POJ 3678 Katu Puzzle
    HDU 1815 Building roads
    CDOJ UESTC 1220 The Battle of Guandu
    HDU 3715 Go Deeper
    HDU 3622 Bomb Game
    POJ 3207 Ikki's Story IV
    POJ 3648 Wedding
    HDU 1814 Peaceful Commission
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/10879749.html
Copyright © 2011-2022 走看看