博客
关于我
【leetcode】合并区间
阅读量:541 次
发布时间:2019-03-09

本文共 1273 字,大约阅读时间需要 4 分钟。

要解决给定一组区间并合并所有重叠区间的问题,可以按照以下步骤进行:

步骤 1:排序区间

首先,将所有区间按照起点进行升序排序。这样可以方便地比较相邻区间,判断是否存在重叠。

步骤 2:初始化结果列表

创建一个空的结果列表,用于存储最终的合并区间。

步骤 3:处理空输入

如果输入的区间集合为空,直接返回空数组。

步骤 4:遍历区间

从排序后的第一个区间开始遍历,逐个检查相邻区间是否存在重叠。

步骤 5:比较区间

对于当前区间和下一个区间,检查当前区间的结束点是否大于等于下一个区间的起点。如果是,说明存在重叠,合并两个区间,更新当前区间的结束点。如果不是,添加下一个区间到结果列表,并更新当前区间。

步骤 6:返回结果

将结果列表转换为数组并返回。

代码实现

以下是Java实现的代码:

import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class Solution {    public int[][] merge(int[][] intervals) {        List
res = new ArrayList<>(); if (intervals.length == 0) { return new int[0][]; } Arrays.sort(intervals, (a, b) -> a[0] - b[0]); int[] current = intervals[0]; res.add(current); for (int i = 1; i < intervals.length; i++) { int[] next = intervals[i]; if (next[0] <= current[1]) { current[1] = Math.max(current[1], next[1]); } else { res.add(next); current = next; } } return res.toArray(new int[][]); }}

解释

  • 排序:使用Arrays.sort对区间数组进行排序,确保区间按起点升序排列。
  • 初始化:创建结果列表res,并处理空输入情况。
  • 遍历:从第二个区间开始遍历,检查每个区间与前一个区间是否存在重叠。
  • 合并:如果存在重叠,合并两个区间,更新当前区间的结束点;否则,将区间添加到结果列表。
  • 返回:将结果列表转换为数组并返回。
  • 这个方法确保了所有重叠区间被正确合并,时间复杂度为O(n log n),主要来自于排序操作。

    转载地址:http://rxhiz.baihongyu.com/

    你可能感兴趣的文章
    Qt笔记——foreach与forever
    查看>>
    QT程序怎么挪到Linux下,linux+Qt程序如何打包发布
    查看>>
    Qt知识:视图框架QGraphicsWidget详解
    查看>>
    SpringBoot中项目启动及定时任务缓存数据库常用数据至内存变量并转换后高频调用
    查看>>
    Qt知识: 画刷风格
    查看>>
    QT的OpenGL渲染窗QOpenGLWidget Class
    查看>>
    QT的C++程序加载动态链接库DLL(Linux下是so)的方式
    查看>>
    QT界面操作1:如何跟踪鼠标位置?
    查看>>
    Qt环境搭建(Visual Studio)
    查看>>
    QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)...
    查看>>
    QT样式表——url路径
    查看>>
    QT数据库(三):QSqlQuery使用
    查看>>
    QT教程5:消息框
    查看>>
    SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存
    查看>>
    pom.xml中提示web.xml is missing and <failonmissingw>...
    查看>>
    Pomelo开发中Web客户端开发API简介
    查看>>
    QT教程2:QT5的体系构架
    查看>>
    PON架构(全光网络)
    查看>>
    PoolingHttpClientConnectionManager原理剖析
    查看>>
    QT教程1:ubuntu18.04安装QT5
    查看>>