【Leetcode】2580. 统计将重叠区间合并成组的方案数

文章目录

  • 题目
  • 思路
  • 代码
  • 复杂度分析
    • 时间复杂度
    • 空间复杂度
  • 结果
  • 总结

题目

题目链接🔗
给你一个二维整数数组 ranges ,其中 ranges[i] = [starti, endi] 表示 starti 到 endi 之间(包括二者)的所有整数都包含在第 i 个区间中。

你需要将 ranges 分成 两个 组(可以为空),满足:

每个区间只属于一个组。
两个有 交集 的区间必须在 同一个 组内。
如果两个区间有至少 一个 公共整数,那么这两个区间是 有交集 的。

比方说,区间 [1, 3] 和 [2, 5] 有交集,因为 2 和 3 在两个区间中都被包含。
请你返回将 ranges 划分成两个组的 总方案数 。由于答案可能很大,将它对 109 + 7 取余 后返回。

示例 1
输入:ranges = [[6,10],[5,15]]
输出:2
解释
两个区间有交集,所以它们必须在同一个组内。
所以有两种方案:

  • 将两个区间都放在第 1 1 1 个组中。
  • 将两个区间都放在第 2 2 2 个组中。

示例 2
输入:ranges = [[1,3],[10,20],[2,5],[4,8]]
输出:4
解释
区间 [ 1 , 3 ] [1,3] [1,3] [ 2 , 5 ] [2,5] [2,5] 有交集,所以它们必须在同一个组中。
同理,区间 [ 2 , 5 ] [2,5] [2,5] [ 4 , 8 ] [4,8] [4,8] 也有交集,所以它们也必须在同一个组中。
所以总共有 4 4 4 种分组方案:

  • 所有区间都在第 1 1 1 组。
  • 所有区间都在第 2 2 2 组。
  • 区间 [ 1 , 3 ] [1,3] [1,3] [ 2 , 5 ] [2,5] [2,5] [ 4 , 8 ] [4,8] [4,8] 在第 1 1 1 个组中, [ 10 , 20 ] [10,20] [10,20] 在第 2 2 2 个组中。
  • 区间 [ 1 , 3 ] [1,3] [1,3] [ 2 , 5 ] [2,5] [2,5] [ 4 , 8 ] [4,8] [4,8] 在第 2 2 2 个组中, [ 10 , 20 ] [10,20] [10,20] 在第 1 1 1 个组中。

提示

  • 1 ≤ r a n g e s . l e n g t h ≤ 1 0 5 1 \leq ranges.length \leq 10^5 1ranges.length105
  • r a n g e s [ i ] . l e n g t h = = 2 ranges[i].length == 2 ranges[i].length==2
  • 0 ≤ s t a r t i ≤ e n d i ≤ 1 0 9 0 \leq start_i \leq end_i \leq 10^9 0startiendi109

思路

对范围进行排序并合并重叠范围。然后计算非重叠范围的数量。得到非重叠范围的组数之后可以直接用数学公式计算出划分成俩个组的总方案数,实现的时候可以排个序以后枚举新的区间在不在之前遍历过的区间里就行了。

代码

class Solution {
public:
    int countWays(vector<vector<int>>& ranges) {
        int n=ranges.size();
        sort(ranges.begin(), ranges.end(), [](auto& a, auto& b) {
            return a[0] < b[0];
        });
        int res = 2, r = ranges[0][1];
        for (int i = 1; i < n; ++i) {
            if (ranges[i][0] > r) {
                res = res * 2 % 1000000007;
            }
            r = max(r, ranges[i][1]);
        }
        return res;
    }
};

复杂度分析

时间复杂度

  • 对给定的区间进行排序,时间复杂度为 O(nlogn),其中 n 是区间的数量。
  • 遍历排序后的区间数组一次,时间复杂度为 O(n),在遍历过程中只有一些简单的数学运算和比较操作。
  • 因此,总体时间复杂度为 O(nlogn)。

空间复杂度

算法中只使用了常数个额外变量,所以空间复杂度为 O(1)

结果

在这里插入图片描述

总结

通过对区间进行排序并合并重叠区间,然后计算非重叠区间的数量,最后利用数学公式计算出划分成两个组的总方案数。时间复杂度为 O(nlogn),空间复杂度为 O(1)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文献阅读笔记(Transformer)

文献阅读笔记&#xff08;Transformer&#xff09; 摘要Abstract1、文献阅读1.1 文献题目1.2 文献摘要1.3 研究背景1.4 模型架构1.4.1 Encoder-Decoder1.4.2 注意力机制1.4.3 多头注意力1.4.4 Position-wise Feed-Forward Networks1.4.5 Embeddings and Softmax1.4.6 Positiona…

应对Locked勒索病毒威胁:你的数据安全准备好了吗?

导言&#xff1a; .Locked勒索病毒&#xff0c;作为一种新型的恶意软件&#xff0c;已经在全球范围内引起了广泛的关注。这种病毒通过加密受害者的文件&#xff0c;并要求支付赎金以获取解密密钥&#xff0c;从而实现对受害者的勒索。本文旨在深入解析.Locked勒索病毒的特点、…

Linux逻辑卷管理

一.前言 Linux系统在使用的过程中&#xff0c;数据只会越来越多。如果在硬盘的标准分区创建了文件系统&#xff0c;那么向已有的文件系统增添额外的存储空间是一件头疼的事情。我们只能在同一块物理硬盘上的可用空间范围内调整分区大小。此外硬盘没有存储空间了&#xff0c;就需…

【tingsboard开源平台】环境准备和安装

文章目录 环境准备:1.安装JAVA2.安装maven环境3.安装nodeJS(16.15.1)4.安装git环境5.安装npm依赖关系6.放入文件fetched7.安装IDEA 环境准备: 1.安装JAVA 以安装java11为例&#xff0c;安装tingsboard需要的jdk 下载地址&#xff1a;https://www.oracle.com/java/technologi…

蓝桥杯每日一题(floyd算法)

4074 铁路与公路 如果两个城市之间有铁路t11&#xff0c;公路就会t2>1,没铁路的时候t1>1,公路t21。也就是公路铁路永远都不会相等。我们只需要计算通过公路和铁路从1到n最大的那个即可。 floyd是直接在数组上更新距离。不需要新建dis数组。另外一定要记得把邻接矩阵初始…

2024,听世界用中文讲故事

汉语为桥&#xff0c;联结一段中国缘分&#xff1b;故事为骨&#xff0c;分享一段精彩人生&#xff1b;文化为翼&#xff0c;共筑一个和美地球村。近日&#xff0c;由教育部中外语言交流合作中心主办、中文联盟承办的第二届“汉语桥”全球外国人汉语大会故事会启动。与世界深情…

C#执行命令行

效果图 主要代码方法 private Process p;public List<string> ExecuteCmd(string args){System.Diagnostics.Process p new System.Diagnostics.Process();p.StartInfo.FileName "cmd.exe";p.StartInfo.RedirectStandardInput true;p.StartInfo.RedirectSta…

如何删除Excel中的空白行?这里提供详细步骤

要从数据集中删除所有空白行吗&#xff1f;如果是这样&#xff0c;Microsoft Excel提供自动和手动方法来清除空白行并向上移动数据。下面是如何使用这些方法。 删除空白行时&#xff0c;Excel会删除整行并上移数据&#xff0c;以便数据集中不再有空行。记住&#xff0c;你也可…

数据结构/C++:位图 布隆过滤器

数据结构/C&#xff1a;位图 & 布隆过滤器 位图实现应用 布隆过滤器实现应用 哈希表通过映射关系&#xff0c;实现了O(1)的复杂度来查找数据。相比于其它数据结构&#xff0c;哈希在实践中是一个非常重要的思想&#xff0c;本博客将介绍哈希思想的两大应用&#xff0c;位图…

VS code中安装了git插件,报错无法使用怎么办?

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端程序媛。 1枚程序媛&#xff0c;2年时间从1800到月入过万&#xff0c;工作5年买房。 分享成长心得❤️&#xff0c;和你一起慢慢变富。 后台回复“前端工具”可获取开发工具&#xff0c;持续更新中 后台…

就业班 第二阶段 2401--3.27 day7 shell之流程控制

把昨天的续上 五、变量置换 命令替换 adate %m%d a$(date %m%d) 反引号亦可用$() 代替 变量替换 一 ${parameter:-word} 若 parameter 为空或未设置&#xff0c;则用 word 代替 parameter 进行替换&#xff0c;parameter 的值不变 # a1 # unset b # a${b:-3} # echo $a 3 #…

SSH配置公钥私钥免密登录——windows to linux

SSH配置公钥私钥免密登录——windows to linux SSH的安全机制一、修改远程主机ssh设置二、在windows客户端生成公钥私钥文件三、将客户端公钥追加到远程主机 .ssh/authorized_keys中参考链接 SSH的安全机制 SSH之所以能够保证安全&#xff0c;原因在于它采用了非对称加密技术(…

【网安小白成长之路】2.PHP与MySQL交互

&#x1f42e;博主syst1m 带你 acquire knowledge&#xff01; ✨博客首页——syst1m的博客&#x1f498; &#x1f51e; 《网安小白成长之路(我要变成大佬&#x1f60e;&#xff01;&#xff01;)》真实小白学习历程&#xff0c;手把手带你一起从入门到入狱&#x1f6ad; &…

力扣Lc22--- 459. 重复的子字符串(java版)-2024年3月27日

1.题目描述 2.知识点 &#xff08;1&#xff09; 在Java中&#xff0c;.repeat(i) 是一个字符串方法&#xff0c;用于将原始字符串重复 i 次。 例如&#xff0c;对于字符串 “ab”&#xff0c;使用 .repeat(3) 将会返回 “ababab”。 public class RepeatExample {public s…

区块链技术与大数据结合的商业模式探索

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 随着区块链技术和大数据技术的不断发展&#xff0c;两者的结合为企业带来了新的商业模式…

WordPress建站:打造您的网站的绝佳选择

前不久&#xff0c;我们遇到一些Hostease客户咨询如何可以快速搭建网站。我们通常推荐客户使用wordpress建站。WordPress建站是指利用WordPress这套免费开源的建站系统来构建网站。类比于电脑软件&#xff0c;安装WordPress后即可轻松搭建网站&#xff0c;其优势不言而喻。 SEO…

DBeaver修改sql语句保存位置

1、dbeaver通过工作空间方式来管理Script的sql脚本以及数据库连接。 工作空间&#xff0c;其实也就是一个文件夹 默认保存路径查看&#xff1a; 文件--> 切换工作空间 --> 其他 sql脚本的保存位置默认在工作空间下的 \General\Scripts 文件夹中。 2、 3、点击浏览&#…

HTML(三)---【列表、表格、块元素、行元素的使用】

零.前言 本文主要介绍列表、表格、块内元素、行内元素。 前置知识及常见标签使用&#xff0c;请见前章&#xff1a; HTML&#xff08;一&#xff09;---【基础】-CSDN博客 HTML&#xff08;二&#xff09;---【常见的标签使用】-CSDN博客 一.<li>表内列表项 1.定义…

C语言例4-14:从键盘输入小写字母转换成大写字母并输出。

代码如下&#xff1a; //从键盘输入小写字母转换成大写字母并输出。 #include<stdio.h> int main(void) {char c1,c2;printf("输入小写字母&#xff1a; \n");c1 getchar(); //从键盘输入一个字符putchar(c1);printf(",%d\n",c1);c2 c1-32; …

Java智慧工地源码 智慧工地的价值体现 开发一套智慧工地系统需要多少钱

智慧工地是智慧地球理念在工程领域的行业具现&#xff0c;是一种崭新的工程全生命周期管理理念。它运用信息化手段&#xff0c;通过三维设计平台对工程项目进行精确设计和施工模拟&#xff0c;围绕施工过程管理&#xff0c;建立互联协同、智能生产、科学管理的施工项目信息化生…