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

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 合并区间
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 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 个组中。
  • 将两个区间都放在第 2 个组中。
    示例 2:

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

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

提示:

1 <= ranges.length <= 105
ranges[i].length == 2
0 <= starti <= endi <= 109

🌟 求解思路&实现代码&运行结果


⚡ 合并区间

🥦 求解思路
  1. ranges按照第一个维度进行升序排序,依次合并有交集的区间,合并方式为当前区间的开始位置是否大于上一个位置的最大结束位置,如果是大于,直接分属于俩个不同的区间,反之,如果不满足的话,更新当前要合并区间的最大右侧位置。
  2. 合并后共有k个大区间,每个大区间都可以分到第一个组或者第二个组,每个大区间都有 2个方案。由于不同的大区间之间互相独立,根据乘法原理,方案数为 2^k。
  3. 我们可以在每次确定当前俩个区间分属于不同的区间逻辑中,进行乘2的操作,同时进行取模的运算。
  4. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
class Solution {public int countWays(int[][] ranges) {Arrays.sort(ranges, (a, b) -> a[0] - b[0]);int ans = 1;int right = -1;for (int[] range : ranges) {if (range[0] > right) {ans = ans * 2 % 1_000_000_007;}right = Math.max(right, range[1]);}return ans;}
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

FPGA 图像处理模块输出端恢复场同步信号Verilog代码

根据输出端有效数据信号计数恢复 reg out_x_cnt;reg out_y_cnt;always (posedge clk or negedge reset) beginif (!reset) beginout_x_cnt < 0;out_y_cnt < 0;end else beginout_x_cnt < valid_o ? ((out_x_cnt img_width - 1) ? 0 : out_x_cnt 1) : out_data_cnt…

基于Springboot的疫情隔离酒店管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的疫情隔离酒店管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

4个AI智能写作平台,为你解决文章写作问题

在信息时代&#xff0c;写作是一项重要的技能&#xff0c;无论是在学术领域还是商务环境中。然而&#xff0c;对于许多人来说&#xff0c;写作并不是一件轻松的事情。但是&#xff0c;随着人工智能的发展&#xff0c;有许多AI智能写作平台可以帮助我们解决文章写作问题。在本文…

外包干了5年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

【MySQL】11. 复合查询(重点)

4. 子查询 子查询是指嵌入在其他sql语句中的select语句&#xff0c;也叫嵌套查询 4.1 单行子查询 返回一行记录的子查询 显示SMITH同一部门的员工 mysql> select * from emp where deptno (select deptno from emp where ename SMITH); -----------------------------…

Google AI 肺癌筛查的计算机辅助诊断

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

计算机网络21-40

计算机网络21-40 以下是本文参考的资料 欢迎大家查收原版 本版本仅作个人笔记使用21、HTTPS是如何保证数据传输的安全&#xff0c;整体的流程是什么&#xff1f;&#xff08;SSL是怎么工作保证安全&#xff09;对称加密非对称加密消息认证码 (MAC)数字证书 22、如何保证公钥不被…

ABC346 A-G 题解

ABC346 A-G题解 A题目AC Code&#xff1a;时间复杂度 B题目时间复杂度AC Code&#xff1a; C题目时间复杂度AC Code&#xff1a; D题目时间复杂度AC Code&#xff1a; E题目时间复杂度AC Code&#xff1a; F题目时间复杂度AC Code&#xff1a; G题目时间复杂度AC Code&#xff…

Learn OpenGL 32 PBR光照

光照 在本章节中&#xff0c;我们把重点放在将之前讨论的理论转化为实际的渲染器&#xff0c;这个渲染器将使用直接的&#xff08;或解析的&#xff09;光源&#xff1a;比如点光源&#xff0c;定向灯或聚光灯。 我们先来看看上一个章提到的反射方程的最终版&#xff1a; 我们…

同一个类构造函数之间相互调用导致的异常

同一个类构造函数之间相互调用导致的异常 错误示例代码 class MyClass { public:MyClass() { p_ std::make_shared<int>();}MyClass(int b) b_(b) { MyClass();} private:int b_;std::shared_ptr<int> p_; };上面代码在使用MyClass(int b)构造函数实例化对象后&…

Vue.js 目录结构

目录解析 目录/文件说明build项目构建(webpack)相关代码config配置目录&#xff0c;包括端口号等。我们初学可以使用默认的。node_modulesnpm 加载的项目依赖模块src 这里是我们要开发的目录&#xff0c;基本上要做的事情都在这个目录里。里面包含了几个目录及文件&#xff1a…

yarn的安装和使用

要安装和使用Yarn&#xff0c;请按照以下步骤进行操作&#xff1a; 首先&#xff0c;确保您的计算机上已经安装了Node.js。您可以通过在命令行中输入以下命令来检查Node.js的安装情况&#xff1a; node --version如果返回了Node.js的版本号&#xff0c;则表示已经成功安装。 …

[项目管理-38]:任务分解技术和方法?

目录 一、任务分解的方法 二、任务分解的步骤 三、如何自定向下分解项目任务 四、如何自顶向下分解软件需求&#xff1f; 五、如何自顶向下分解软件设计&#xff1f; 一、任务分解的方法 任务分解技术和方法是一种将复杂的任务或项目分解为更小、更具体的子任务的过程&am…

红楼梦人物关系知识图谱构建及推理研究

红楼梦人物关系知识图谱构建及推理研究 前言数据爬取与处理知识图谱构建可视化分析与推理研究总结 前言 《红楼梦》是中国古典文学巅峰之作&#xff0c;其中丰富的人物关系构成了一幅错综复杂的社会画卷。本文将介绍如何利用Python编写爬虫代码&#xff0c;使用Requests库进行…

算法刷题day36

目录 引言一、道路与航线二、最优贸易三、选择最佳路线 引言 今天先是把之前还不熟的模板都写了一遍&#xff0c;写了才能体会到&#xff0c;其实模板写了背了其实还是不顶用&#xff0c;还是要有大量的刷题积累&#xff0c;才能把模板发挥出来&#xff0c;不然真的你都看不出…

字符串常量池

特点 1 只要是双引号引起来的字符串都存储在常量池中 2 每次存储字符串的时候&#xff0c;先检查常量池是否有该字符串&#xff0c;如果没有则存储&#xff0c;有则直接使用常量池中的字符串。 示例一&#xff1a; 字符串String由两部分组成&#xff0c;value(存储常量池中的…

Unity-C#进阶——3.27更新中

文章目录 数据结构类ArrayListStackQueueHashtable 泛型泛型类、泛型方法、泛型接口ListDictionaryLinkedList泛型栈&#xff0c;泛型队列 委托和事件委托事件匿名函数Lambad 表达式**闭包** List 排序逆变协变多线程进程线程多线程方法&#xff1a;线程之间共享数据&#xff1…

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

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

一键掌控:Shell脚本自动化安装与管理Conda环境的艺术

前面写了个博客《conda&#xff1a;解决多项目开发环境配置的神器&#xff01;》简单介绍了 Conda 的安装和基本命令&#xff0c;在做开发时经常会使用 Conda 建立多个应用环境&#xff0c;Conda 的命令虽不复杂&#xff0c;但还是有时会弄混&#xff0c;所以就考虑写个脚本&am…

day5-QT

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QFontDialog> //字体对话框类 #include<QFont> //字体类 #include<QMessageBox> //消息对话框类 #include<QColorDialog> //颜色对话框类 #include<QColor> //颜…