博客
关于我
【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/

    你可能感兴趣的文章
    python基础语法
    查看>>
    Python基础综合练习
    查看>>
    python基础篇(4):range语句
    查看>>
    python基础篇(3):print()补偿知识点
    查看>>
    python基础篇(2):字符串扩展知识点
    查看>>
    python基础篇(1):type()
    查看>>
    python基础篇(15):闭包
    查看>>
    python基础篇(14):多态
    查看>>
    python基础篇(12):继承
    查看>>
    python基础篇(11):封装
    查看>>
    python基础篇(10):自定义包
    查看>>
    python基础篇(10):类、对象与构造方法
    查看>>
    python系列【仅供参考】:python斗地主
    查看>>
    Python基础教程(第2版 修订版) pdf
    查看>>
    python基础实践(四)
    查看>>
    Python基础学习笔记(九)常用数据类型转换函数
    查看>>
    Python基础学习参考(五):字符串和编码
    查看>>
    Python基础学习
    查看>>
    python基础变量之---集合
    查看>>
    python基础变量之---字典
    查看>>