Leetcode2406. 将区间分为最少组数

【C++差分数组 区间贪心】2406. 将区间分为最少组数|1731 给你一个二维整数数组 intervals ,其中 intervals[i] = [lefti, righti] 表示 闭 区间 [lefti, righti] 。 你需要将 intervals 划分为一个或者多个区间 组 ,每个区间 只 属于一个组,且同一个组中任意两个区间 不相交 。 请你返回 最少 需要划分成多少个组。 如果两个区间覆盖的范围有重叠(即至少有一个公共数字),那么我们称这两个区间是 相交 的。比方说区间 [1, 5] 和 [5, 8] 相交。 阅读详情

Every day a Leetcode

题目来源:2406. 将区间分为最少组数

解法1:优先队列

按照 left 排序后,用最小堆模拟,堆顶存储每个组最后一个区间的 right。

遍历区间:

  • 如果当前的 left 大于堆顶,则可以接在这个组的末尾,更新堆顶为 right;
  • 否则需要创建一个新的组。

代码:

/*
 * @lc app=leetcode.cn id=2406 lang=cpp
 *
 * [2406] 将区间分为最少组数
 */

// @lc code=start

// 优先队列

class Solution
{
private:
    static bool cmp(const vector<int> &a, const vector<int> &b)
    {
        return a[0] < b[0];
    }

public:
    int minGroups(vector<vector<int>> &intervals)
    {
        // 特判
        if (intervals.empty())
            return 0;

        priority_queue<int, vector<int>, greater<>> pq;
        sort(intervals.begin(), intervals.end(), cmp);
        for (vector<int> &interval : intervals)
        {
            if (!pq.empty() && pq.top() < interval[0])
                pq.pop();
            pq.push(interval[1]);
        }
        // 最终,优先队列存储的是每个区间的右边界
        return pq.size(); // 优先队列的大小即为划分组数
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(nlog⁡n),其中 n 为数组 intervals 的长度。

空间复杂度:O(n),其中 n 为数组 intervals 的长度。

解法2:差分数组

另外一种思路是转换成上下车模型,每个区间看成一个人,他在 left 时刻上车,right+1 时刻下车,最后答案为同时在车上的人数的最大值。

这可以用差分数组实现,下面代码用的平衡树,方便从小到大计算。

代码:

// 差分数组

class Solution
{
public:
    int minGroups(vector<vector<int>> &intervals)
    {
        // 特判
        if (intervals.empty())
            return 0;

        // 构造差分数组
        map<int, int> diff;
        for (vector<int> &interval : intervals)
        {
            int from = interval[0], to = interval[1];
            diff[from]++;
            diff[to + 1]--;
        }

        int min_group = 0, sum = 0;
        for (auto &[_, d] : diff)
        {
            sum += d;
            min_group = max(min_group, sum);
        }
        return min_group;
    }
};

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(nlog⁡n),其中 n 为数组 intervals 的长度。

空间复杂度:O(n),其中 n 为数组 intervals 的长度。

【鸿蒙实战开发】HarmonyOS申请调试签名证书过程 这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。 阅读详情

相关推荐

LTE信令流程及业务流程

eNB返回E-RAB建立响应消息,E-RAB建立列表信息中包含成功建立的承载信息,E-RAB建立失败列表消息中包含没有成功建立的承载消息。3)当下行数据达到时,网络侧先对UE进行寻呼,随后UE发起随机接入过程,并发起service request过程。用户面:S-GW向eNB发送承载建立请求,包含(IMSI, QoS, TFT, TEID, LBI等)控制面:MME向eNB发送E-RAB建立请求,包含E-RAB ID,QoS,S-GW TEID。3)在S1接口上建立S1承载,在Uu接口上建立数据无线承载。

qq_44390640的博客 4584

LeetCode 2406. 将区间分为最少组数

【代码】LeetCode 2406. 将区间分为最少组数。 贪心 + 堆优化 差分数组

qq_45925322的博客 391

LuaJit分析(十一)去除string.dump函数

因此即使我们的指令顺序被打乱,通过loadfile系统调用,再通过string.dump调用,可以得到字节码文件,再通过与标准的luajit生成的字节码文件比对,即可找出差异所在。Lua脚本中的string.dump函数用于生成字节码文件,根据对 luajit -b命令的分析可以得出,最终dump出字节码文件都是使用的string.dump函数。同时lj_libdef.h和lj_ffdef.h这两个文件都是自动生成的,在msvcbuild.bat中,使用如下命令生成。

a545958498的博客 1133

【LeetCode】2406、将区间分为最少组数

接下来, 再放 [5, 10], 其实只需要考虑已有各组的最小的 右端点(即 [2, 3] 的 3 是最小的), 而 [5, 10] 和 [2, 3] 并不相交, 所以可以合并。以示例一为例, 如果已经有 [1, 5] 的情况下, [1, 10] 因为和 [1, 5] 有交集所以必须单独成组. 则分为两个组, 如下。因为尽量合并, 为了紧凑, 尽量按 left 从小到大 依次处理. 而题目答案也和顺序无关(因为只需要组的数目), 所以可以排序.题目已知一些区间, 需要尽量合并, 使 组 最少.

呆呆的猫的博客 1050

Miniconda入门:在CentOS上的安装、基本操作、目录结构、卸载

Miniconda是一个 免费的 轻量级的 conda安装程序 它只包含conda、Python、pip、zlib等基础的文件和依赖包 使用conda install命令可从Anaconda存储库中安装额外的conda包 简介 下载 安装 基本操作 虚拟环境的操作 包的操作 目录结构 卸载

ArYe 1万+

阿里云百炼接入本地Claude,接入idea

阿里云百炼平台提供两种接入方式:未购买套餐时使用通用API Key(sk-xxxxx),需注意免费额度独立计算且不会自动切换模型;购买Coding Plan套餐后使用专属API Key(sk-sp-xxxxx),享受固定月费无超支风险。配置需在.claude/settings.json中设置认证信息,包括API Key和Base URL。建议开启"用完即停"功能避免意外扣费,不同模型的免费额度互不影响。购买套餐后还可通过IDEA插件Claude Code进行集成,实现固定费用下的稳定使用

fengtangjiang的博客 1363

2406. 将区间分为最少组数-差分数组

给你一个二维整数数组 intervals ,其中 intervals[i] = [lefti, righti] 表示 闭 区间 [lefti, righti]。如果两个区间覆盖的范围有重叠(即至少有一个公共数字),那么我们称这两个区间是 相交 的。比方说区间 [1, 5] 和 [5, 8] 相交。输入:intervals = [[5,10],[6,8],[1,5],[2,3],[1,10]]输入:intervals = [[1,3],[5,6],[8,10],[11,13]]这题用差分数组去做啊。

weixin_43327597的博客 264

11 CO配置-控制-成本中心会计-定义分割结构(OKES-Define Splitting Structure)

业务背景:定义分割结构 事务码: OKES SPRO路径:SPRO->控制->成本中心会计->实际过账->期末结算->作业分配->划分->定义分割结构 第1步,SPRO路径进入 第2步,选择“新的条目”创建 分割结构 第3步,选择分割结构代码 点击“分割规则”进行下一个界面,点击“新条目”创建 分割结构规则 第4步,点击“为规则选择” 为分割结构规则创建版本并保存 第5步,选择“分配”,点击“新的条目” 输入分割结构分配

4372

力扣2406.将区间分为最少组数

用一个小根堆储存每一组的右端点。

Pisasama的博客 244

关于mos管的压降问题(项目遇到问题总结)

在研发过程中没有出现问题的板子,到了小批时竟出现雷达一直在触发???找了大几天,没有头绪。心中疑惑颇多,加上老板催促,自考等原因,真是压力山大。4月份自考,只有差不多一个月时间了吧,没有什么大的收获,反而在查找硬件问题的过程中,发现了一个自己忽视的一个问题,就是关于Mos管的压降问题。 备考的过程崎岖不平,工作又问题多多,孰轻孰重,如何取舍?从心理来说,不想取舍什么,只是有所得就可以,过不了就过不了呗,已经毕业十五年了,没这个本科文凭不也过来了吗?只是代表了自己在这一段时间的思考,自己兴趣吧,没什么大不了

guangod的博客 2万+

delphi fmx android 自动更新(一)

所以,如果是http 则,manifest.xml application 下,https无需添加。增加android:usesCleartextTraffic="true",不然无法使用http下载东西。1,REQUEST_INSTALL_PACKAGES 权限。4,WRITE_EXTERNAL_STORAGE 权限。3,READ_EXTERNAL_STORAGE 权限。一般是从http下载安装包 apk。2,INTERNET 权限。sFile为apk包路径。

全粘工程师 553

Leetcode.2406 将区间分为最少组数

贪心

感觉画质不如...原神的博客 258

PCL 改进快速欧式聚类【2025最新版】

在FEC: Fast Euclidean Clustering for Point Cloud Segmentation一文的基础上对算法进行改进。博客长期更新,本文最近更新时间为:2025年9月16日。

点云侠的博客 2570

LeetCode2208. 将数组和减半的最少操作次数、LeetCode2406.将区间分为最少组数

本文介绍了两个LeetCode问题的贪心算法解决方案: LeetCode2208:使用最大堆(通过负数实现)贪心策略,每次选择最大数减半,直到数组和减半。时间复杂度O(n log n),空间复杂度O(n)。 LeetCode2406:采用最小堆维护区间组的右端点,将区间按左端点排序后,遍历时判断能否合并到已有组或新建组。时间复杂度O(n log n),空间复杂度O(n)。 两个问题都展示了堆数据结构在贪心算法中的高效应用,通过优先处理最大/最小元素来优化操作次数或分组数量。

lcreek的博客 362

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【LeetCode每日一题】2381. 字母移位 II&&2406. 将区间分为最少组数 (差分数组)

通过两道leetcode真题深入了解差分数组在不同场景下的应用

qq_43720551的博客 996

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【贪心】【数据结构-小根堆,差分】力扣2406. 将区间分为最少组数

当新区间的左端点要比堆顶元素(最小右端点)大的时候,那么就将这个区间分到堆顶元素所在的组中,由于我们只需要记录每个组的最大右端点,那么就将堆顶元素替换成新区间的右端点,然后priority_queue将会保证堆顶元素是最小的(所有组的最大右端点比较后的最小的最大右端点)。比方说区间 [1, 5] 和 [5, 8] 相交。输入:intervals = [[5,10],[6,8],[1,5],[2,3],[1,10]]输入:intervals = [[1,3],[5,6],[8,10],[11,13]]

sjsjs11的博客 612

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[贪心-区间分组][差分数组]leetcode2406. 将区间分为最少组数(medium)

【代码】[贪心-区间分组][差分数组]leetcode2406. 将区间分为最少组数(medium)

algsup 543

【力扣周赛】来自VIP的原题压制:2406.将区间分为最少组数,内含福利!

【力扣周赛】来自VIP的原题压制:2406.将区间分为最少组数,内含福利!

清风Python 780

每日算法刷题Day49:7.16:leetcode 差分5道题,用时2h

2.一开始分析最小的y坐标,且一旦一个y满足条件,大于等于它的必定满足条件,所以满足单调性,可以用二分,但是y是浮点数,不知道怎么做了,所以想着转成。1.一个二维区间加上/减去一个数,先算差分数组,然后差分数组求前缀和就是原数组,求前缀和借鉴二维前缀和的思想,但是算法类比一维差分还原前缀和。为当前在两条线范围内的正方形的累计长度,即等价为一个矩形,通过下面的数学公式推导如下。如果两个区间覆盖的范围有重叠(即至少有一个公共数字),那么我们称这两个区间是。加1,然后最终答案就是被最多区间覆盖的点的值。

2301_80044595的博客 1246

从入门到精通——差分数组

n],其中 D[i] = A[i] - A[i-1],对于 i = 2, 3, …, n,且 D[1] = A[1](或者可以选择 D[1] = 0,如果 A[1] 是相对于某个已知的起始值)。n],方法是从 A[1] = D[1] 开始,然后对于每个 i(2 ≤ i ≤ n),计算 A[i] = A[i-1] + D[i]。从 A[1] 开始,使用差分数组中的每个差值逐步累加,最终得到的 A[n] 应该与原始数组的最后一个元素相同。差分数组的一个核心定理是,给定一个差分数组,可以唯一地重建原始数组。

卷心菜是俺的博客 3190

一维差分(扫描线)之区间重叠

本文介绍了四种处理区间重叠问题的算法:1. 合并区间(56题):先排序后遍历合并重叠区间;2. 插入区间(57题):先插入再排序合并;3. 日程安排III(732题):用差分哈希表动态统计最大重叠数;4. 最少分组(2406题):差分哈希表求最大重叠数决定最小分组。核心思路都是通过排序或差分标记处理区间重叠问题,其中差分法适用于动态统计场景。

m0_68367618的博客 247

leetcode - 2406. Divide Intervals Into Minimum Number of Groups

leetcode-2406

sinat_41679123的博客 441

算法题 - 差分数组

对于数组a, 定义其差分数组为dia0i0ai−ai−1i≥1\right.dia0i0ai−ai−1i≥1​性质1: 从左到右累加d中的元素,可以得到数组a.性质2: 如下两个操作是等价的。把a的子数组a[i], a[i+1],⋯\cdots⋯, a[j]都加上x.把d[i]增加x, 把d[j + 1]减少x.

qq_34826149的博客 860

周赛补题(AcWing、力扣)

acwing、力扣

qq_56407679的博客 597

区间重叠问题:从核心判断到合并、调度与优化的算法精解

区间重叠判断是计算机科学中处理范围、时段或资源冲突的基础算法概念。其核心原理在于将现实问题(如会议时间、任务调度)抽象为数轴上的区间,并通过比较起点和终点的相对位置来判断是否存在交集。这一原理构成了贪心算法和扫描线等技术的基础,具有极高的技术价值,能高效解决冲突检测与资源优化问题。在工程实践中,它广泛应用于日程安排系统、任务调度、网络带宽管理及版本控制等场景,是解决合并区间、计算最少会议室数量(最大重叠数)等经典算法问题的关键。本文深入探讨了基于排序和遍历的通用解决范式,并提供了可直接复用的代码模板与边界处

weixin_30621711的博客 349

LeetCode每日一题(2406. Divide Intervals Into Minimum Number of Groups)

首先将 intervals 根据 start 进行排序, 然后用一个 min heap 来保存当前的所有的 group 的 end 值, 每次从 intervals 中拿取一个 interval, 将 interval[0]与 heap 中最小的 end 进行对比, 如果 interval[0] > min_end, 则证明可以放到该组中, 我们将 min_end 从 heap 中取出, 然后放入 interval[1], 完成对该组 end 值的更新。

wangjun861205的博客 461
上一篇: Leetcode2381. 字母移位 II
下一篇: Leetcode1109. 航班预订统计
UestcXiye
博客等级 码龄8年 9032粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值