Leetcode 56 合并区间

news2024/7/7 16:07:35

Leetcode 56 合并区间

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/merge-intervals/description

博主Github:https://github.com/GDUT-Rp/LeetCode

题目:

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [start i, end i] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

示例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] 可被视为重叠区间。

提示:

  • 1 <= intervals.length <= 1 0 4 10^4 104
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 1 0 4 10^4 104

解题思路:

方法一:排序

先排序,逐个过,有交集就更新,没有交集就可以加到答案去了

Golang

func merge(intervals [][]int) [][]int {
    if len(intervals) == 0 {
        return intervals
    }

    // 排序
    sort.SliceStable(intervals, func(i, j int) bool {
        return intervals[i][0] < intervals[j][0]
    })

    var ans [][]int
    
    pre := intervals[0]
    for i := 1; i < len(intervals); i++ {
        // 判断交集
        if intervals[i][0] <= pre[1] {
        	// max 是为了 [1, 4] [2, 3]
            pre[1] = max(intervals[i][1], pre[1])
            continue
        }
        
        // 不存在
        ans = append(ans, pre)
        pre = intervals[i]
    }
    ans = append(ans, pre)

    return ans
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}

复杂度分析

时间复杂度 O(n log ⁡ \log logn )​ 。
空间复杂度 O( log ⁡ \log logn) 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/606714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python升序排序sort:让你的数据更易管理

Python升序排序sort&#xff1a;让你的数据更易管理 如果你是一位熟练的Python开发人员&#xff0c;你肯定听说过Python内置的sort()函数。这个函数是用来对列表、元组和可迭代对象进行排序的。 在本篇文章中&#xff0c;我们将着重介绍升序排序&#xff0c;探讨sort()函数的…

文件上传、MD5加密与验证码的功能实现

UUID工具类 1.概述&#xff1a;UUID 是通用唯一识别码&#xff08;Universally Unique Identifier&#xff09;的缩写。UUID 让分布式系统中的所有元素&#xff0c;都能有唯一的辨识信息&#xff0c;而不需要通过中央控制端来做辨识信息的指定。 是一个软件建构的标准&#x…

权限管理与jwt鉴权

权限管理与jwt鉴权 学习目标&#xff1a; 理解权限管理的需求以及设计思路实现角色分配和权限分配 理解常见的认证机制 能够使用JWT完成微服务Token签发与验证 权限管理 需求分析 完成权限&#xff08;菜单&#xff0c;按钮&#xff08;权限点&#xff09;&#xff0c;A…

【5.26 代随_38day】 动态规划基础理论、斐波那契数、爬楼梯、使用最小花费爬楼梯

动态规划基础理论、斐波那契数、爬楼梯、使用最小花费爬楼梯 动态规划基础理论1.动态规划的五部曲 斐波那契数1.动态规划的方法代码 爬楼梯图解步骤代码 使用最小花费爬楼梯图解步骤代码 动态规划基础理论 视频连接&#xff1a;动态规划解题方法论大曝光 &#xff01;| 理论基…

皮卡丘../../(目录遍历)/敏感信息泄露/PHP反序列化

一.目录遍历 1.概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量&#xff0c;从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时&#xff0c;便会将请求的这个文件的值(比如文件名称)传递到后台&#xff0c;后台再执行其对应的文件。 在这个过程中…

ArrayList的底层实现原理

目录 一、知识点回顾二、ArrayList 的 add() 和 remove() 的实现2.1 list.add(e) 实现原理2.2 list.remove() 实现原理 ArrayList的底层是通过数组实现的。 一、知识点回顾 数组特点&#xff1a; 存储区间是连续的&#xff0c;且占用内存严重&#xff0c;空间复杂度很大&…

第3节:cesium 离线地图下载(含教程+视频)

主要介绍两种方式。 第一种 望远网(web端地图下载) web端地图下载 第一步:选择资源发布方 第二步:选择地图类型以及路网 第三步:选择区域 支持区域选择和自定义区域两种方式 第四步:右键下载 提示:超过100个瓦片需要购买VIP

web前端 --- BOM编程、DOM编程

BOM编程&#xff08;browser object model -- 浏览器对象模型&#xff09; BOM给JavaScript提供用来操作浏览器的若干的"方法" 操作 在 js 看来&#xff0c;一个完整的浏览器包含如下组件&#xff1a; window窗口 // 整个浏览器的窗口 |-- history …

论文笔记--Efficient Estimation of Word Representations in Vector Space

论文笔记--Efficient Estimation of Word Representations in Vector Space 1. 文章简介2. 文章概括3 文章重点技术3.1 NNLM(Neural Network Language Model)3.1.1 NNLM3.1.2 RNNLM(Recurrent Neural Net Language Model) 3.2 Continuous Bag-of-Words Model(CBOW)3.3 Continuo…

皮卡丘Over Permission

1.越权漏洞概述 如果使用A用户的权限去操作B用户的数据&#xff0c;A的权限小于B的权限&#xff0c;如果能够成功操作&#xff0c;则称之为越权操作。 越权漏洞形成的原因是后台使用了不合理的权限校验规则导致的。 一般越权漏洞容易出现在权限页面&#xff08;需要登录的页面…

省三医院新门诊大楼网络安全建设项目实施方案

省三医院新门诊大楼网络安全建设项目实施方案 甲方&#xff1a;省三医院 乙方&#xff1a;武汉埃郭信息技术有限公司1组吴冰冰 项目背景 省三医院新建一栋门诊大楼&#xff0c;地址位于原三医院东南处空地。为了响应国家建设数字医疗&#xff0c;构建医联网、医共体的号召&…

不要图片?CSS实现圆角边框渐变色+背景透明

前言 &#x1f44f;不要图片&#xff1f;CSS实现圆角边框渐变色背景透明&#xff0c;最近在工作中常常实现这些效果&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现原理 border-image&#xff1a; border-image CSS …

python基本操作3(速通版)

目录 一、字典 1.字典定义 2.字典的访问 3.字典的遍历 4.字典删除 5.字典练习 6.有序字典 7.集合 8.类型转化问题 9.公共方法 二、列表推导式 1.基本操作 2.在循环中使用if 三、组包和拆包 1.组包拆包基本应用 2.拆包的字典问题 四、python函数的一些特性 1.函…

【5.31 代随_43day】 最后一块石头的重量 II、目标和、一和零

最后一块石头的重量 II、目标和、一和零 最后一块石头的重量 II1.方法图解步骤![在这里插入图片描述](https://img-blog.csdnimg.cn/d2266317bc43491fb261f6372c2e0c9d.jpeg)代码 目标和1.方法图解步骤代码 一和零图解步骤代码 最后一块石头的重量 II 力扣连接&#xff1a;104…

状态机编程应用(收放卷停车方式控制)

有关状态机的详细介绍请参看下面的文章博客: PLC面向对象编程系列之有限状态机(FSM)详解_codesys 状态机_RXXW_Dor的博客-CSDN博客编写PLC控制机器动作类程序时,当分支比较少的时候我们使用if else语句解决,当分支比较多的时候,我们要使用CASE,END_CASE语句解决,针对分支…

微信小程序个人心得

首先从官方文档给的框架说起,微信小程序官方文档给出了app.js, app.json, app.wxss. 先从这三个文件说起. 复制 app.js 这个文件是整个小程序的入口文件,开发者的逻辑代码在这里面实现,同时在这个文件夹里面可以定义全局变量.app.json 这个文件可以对小程序进行全局配置,决定…

【6.01 代随_44day】 完全背包、零钱兑换 II、组合总和 Ⅳ

完全背包、零钱兑换 II、组合总和 Ⅳ 完全背包1.方法图解步骤 零钱兑换 II1.方法图解步骤代码 组合总和 Ⅳ图解步骤代码 完全背包 讲解连接&#xff1a;完全背包 1.方法 首先再回顾一下01背包的核心代码 for(int i 0; i < weight.size(); i) { // 遍历物品for(int j b…

javaScript蓝桥杯---分阵营,比高低

目录 一、介绍二、准备三、目标四、代码五、答案 一、介绍 期末考试结束不久&#xff0c;辛勤的园丁们就将所有学生的考试成绩汇总完毕。不过现在遇到一个问题&#xff0c;那就是目前所有学生的考试数据均混杂在一起。这些数据结构如下&#xff1a; [{name: "潇然"…

安装Pygame库:在Python中创建游戏的第一步

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 前言 安装Pygame库 方法一、在pycharm内部直接安装 方法二、通过pip直接安装 验证安装 前言 Pygame是一个功能强大的Python游戏开发库&#xff0c;它提…

MCU器件选型---主流厂商

MCU(Micro Controller Unit)中文名称为微控制单元&#xff0c;又称单片微型计算机(Single Chip Microcomputer)&#xff0c;是指随着大规模集成电路的出现及其发展&#xff0c;将计算机的CPU、RAM、ROM、定时数器和多种I/O接口集成在一片芯片上&#xff0c;形成芯片级的计算机&…