栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

56. 合并区间

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

56. 合并区间

题目

解法

list 和int[ ][ ]的函数

Java中的Arrays.sort()方法

  • list的用法
    List res = new ArrayList<>();
    res.add(intervals[i - 1])
    res.get(i)
  • 二维数组的用法
    Arrays.sort(intervals, (a, b) -> a[0] - b[0])
    intervals[i]、intervals[i][0]
    intervals[i] = new int[] {,}
List —> int[][]
    // List ---> int[][]
    int[][] resArr = new int[res.size()][];
    for (int i = 0; i < res.size(); i++)
        resArr[i] = res.get(i);
代码
public int[][] merge(int[][] intervals) {
    // 按照数组中第一个元素排序
    Arrays.sort(intervals, (a, b) -> a[0] - b[0]);

    // 计算合并
    List res = new ArrayList<>();
    for (int i = 1; i < intervals.length; i++) {
    	 // Math.max:[1,3][2,4]->[1,4]  [1,5][2,4]->[1,5]
        // 对于 [1,3] 和 [2,6], 比较 3 和 2, 3 >= 2 则合并
        if (intervals[i][0] <= intervals[i - 1][1]) {
            intervals[i] = new int[] {
                    intervals[i - 1][0], Math.max(intervals[i - 1][1], intervals[i][1]) };
        } else // 不能合并则将上一个合并结果加入
            res.add(intervals[i - 1]);
    }
   
    // 最后一次的结果需要额外放入 
    // 比如说最后一个是合并结束的所以只走了上边的if,并没有走下边add的操作,因此最后一个需要单独加进去
    res.add(intervals[intervals.length - 1]);

    // List ---> int[][]
    int[][] resArr = new int[res.size()][];
    for (int i = 0; i < res.size(); i++)
        resArr[i] = res.get(i);
    return resArr;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/839159.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号