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

    合并区间

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

    示例 1:

    输入: intervals = [[1,3],[2,6],[8,10],[15,18]]
    输出: [[1,6],[8,10],[15,18]]
    解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
    示例 2:

    输入: intervals = [[1,4],[4,5]]
    输出: [[1,5]]
    解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
    注意:输入类型已于2019年4月15日更改。 请重置默认代码定义以获取新方法签名。

    解题思路:先让数组按照每个区间的开始进行升序排序,排序后的数组元素如果能合并到一个区间那么必然是挨着的,利用这个性质遍历排序后的数组

    class Solution {
        public int[][] merge(int[][] intervals) {
            Arrays.sort(intervals, (a, b) -> {
                if(a[0] == b[0])
                    return a[1] - b[1];
                
                return a[0] - b[0];
            });
            
            List<int[]> list = new ArrayList();
            for(int i = 0; i < intervals.length; i++) {
                int l = intervals[i][0], r = intervals[i][1];
                if(list.size() == 0 || list.get(list.size() - 1)[1] < l) {
                    list.add(new int[]{l, r});
                } else {
                    list.get(list.size() - 1)[1] = Math.max(r, list.get(list.size() - 1)[1]);
                }
            }
            
            return list.toArray(new int[list.size()][]);
        }
    }
    
  • 相关阅读:
    MongoDB Query 常用方法
    plsql中文乱码问题(显示问号)
    xtype的使用
    LinQ:list基础操作
    VMware Fusion自动切换分辨率
    C#截取字符串的方法小结
    HTML 编码
    AMQP(Advanced Message Queuing Protocol)
    rabibtMQ安装及集群配置linux
    今天是个开始
  • 原文地址:https://www.cnblogs.com/katoMegumi/p/13936556.html
Copyright © 2011-2022 走看看