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

文章目录

  • 思路
  • AC CODE
  • 总结



题目链接:2580. 统计将重叠区间合并成组的方案数
在这里插入图片描述


思路

  • 一个区间合并的板子,计算出区间数目之后,每个区间都有放左和放右两种选法,所以最后的答案就是 2 k 2^k 2k
  • 但是需要用c进行二维数组的排序,我不会qsort(),就写了一个数组的快排,然后用了快速幂计算答案。

AC CODE

void cmp(int **i, int **j){int *tmp = *i;*i = *j;*j = tmp;
}void quick_sort(int **q, int l, int r){if(l >= r) return;int i = l - 1, j = r + 1, x = q[(l + r) >> 1][0];while(i < j){do i++; while(q[i][0] < x);do j--; while(q[j][0] > x);if(i < j) cmp(&q[i], &q[j]);}quick_sort(q, l, j); quick_sort(q, j + 1, r);
}long long qmi(long long a, long long b, int mod){long long res = 1 % mod;while(b){if(b & 1) res = (res * a) % mod;a = a * a % mod;b >>= 1;}return res;
}int countWays(int** ranges, int rangesSize, int* rangesColSize) {const int mod = 1e9 + 7;int st = -1, ed = -1;long long res = 0;quick_sort(ranges, 0, rangesSize - 1);for(int i = 0; i < rangesSize; ++i){int seg = ranges[i][0];if(seg <= ed) ed = fmax(ed, ranges[i][1]);else{res++;st = seg;ed = ranges[i][1];}}res = qmi(2, res, mod);return res % mod;
}

总结

  • 交换一维数组时,用了取二维地址然后交换,跟交换变量一个道理。
  • q[i]是一个指向一维数组的一级指针,所以需要取地址。

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

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

相关文章

大模型时代的程序员:不会用AIGC编程,未来5年将被淘汰?

过去&#xff0c;初级程序员入职学习编程时&#xff0c;往往是师傅给一个任务需求&#xff0c;教大体的思路&#xff0c;然后在初级程序员写出代码工作当中培训和纠正&#xff0c;针对不同的命题告诉不同的方案&#xff0c;直到初级程序员把这些经验学会。 但大模型的到来把这…

【MySQL数据库】Table ‘xxx‘ doesnot exist错误解决

有两种可能性&#xff1a; 1、数据库中确实不存在这张表了&#xff0c;检查表被删除的原因。 2、数据库中存在表&#xff0c;但还报表不存在的错误&#xff0c;检查MySQL数据库的自动更新是否关闭&#xff0c;如果没有的话就通过图中所示方式关闭。

C++ | Leetcode C++题解之第1题两数之和

题目&#xff1a; C 题解&#xff1a; class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> hashtable;for (int i 0; i < nums.size(); i) {auto it hashtable.find(target - nums[i]);if (it …

差分与前缀和

目录 差分法 例题&#xff1a;大学里的树木要打药 前缀和 例题&#xff1a;大学里的树木要维护 差分法 差分法的应用主要是用于处理区间问题&#xff0c;当一个数组要在很多不确定的区间&#xff0c;加上相同的一个数&#xff0c;我们如果每个数都进行加法操作的话&#x…

备忘录软件哪款可以加密?备忘录app怎么加密?

在快节奏的现代生活中&#xff0c;备忘录软件已成为我们不可或缺的助手。它不仅能方便我们随时记录任务事项&#xff0c;捕捉生活中的灵感&#xff0c;还便于我们随时修改和查看记录内容&#xff0c;实用性极高。然而&#xff0c;随着记录内容的增多&#xff0c;数据安全性问题…

顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-修改分机注册间隔时间

文章目录 前言联系我们例子问题一问题二 前言 注册周期&#xff1a;SIP客户端会每隔设定的时间发送一次注册请求&#xff0c;freeswitch 如果收到客户端的注册请求&#xff0c;就会让你注册成功&#xff1b;但如果在设定的时间内&#xff0c;freeswitch 任没有收到软件的注册请…

爬虫部署平台crawlab使用说明

Crawlab 是一个基于 Go 语言的分布式网络爬虫管理平台&#xff0c;它支持 Python、Node.js、Jar、EXE 等多种类型的爬虫。 Crawlab 提供了一个可视化的界面&#xff0c;并且可以通过简单的配置来管理和监控爬虫程序。 以下是 Crawlab 的一些主要优点&#xff1a; 集中管理&am…

Netty核心原理剖析与RPC实践11-15

Netty核心原理剖析与RPC实践11-15 11 另起炉灶&#xff1a;Netty 数据传输载体 ByteBuf 详解 在学习编解码章节的过程中&#xff0c;我们看到 Netty 大量使用了自己实现的 ByteBuf 工具类&#xff0c;ByteBuf 是 Netty 的数据容器&#xff0c;所有网络通信中字节流的传输都是…

【2024年IntelliJ IDEA连接redis数据库 】

1&#xff1a;显示 tools window bar&#xff0c;打开database选项 2&#xff1a;添加redis连接信息&#xff1a; 3&#xff1a;填写host主机&#xff0c;端口号&#xff0c;有密码的天上密码&#xff0c;redis没有username&#xff0c;不用填。Test Connection。没问题就Apply…

15 - grace序列处理 - 十三点滑动平均法

grace序列处理 -十三点滑动平均法 滑动平均是一种常用的平滑数据的方法,可以用于去除噪声或者提取趋势。十三点滑动平均是指使用窗口大小为13的滑动平均,应用于GRACE序列处理中可以去除周年项的影响。 十三点滑动平均的计算公式为: y [ n ] = ( x [ n − 6 ]

String、StringBuffer、StringBuilder类

最近在复习 Java 基础的时候&#xff0c;看到了 String 这块的内容&#xff0c;我突发奇想&#xff0c;可以将 String、StringBuffer、StringBuilder 这些知识点整合在一起记忆。我之前背的那个答案其实有点琐碎&#xff0c;而且不太好理解&#xff0c;还繁杂&#xff0c;所以我…

前端缓存揭秘:5年前端技术的必备知识点

背景 本篇文章将详细讲述何为前端缓存&#xff0c;这也是前端工程师必备的知识点。 首先&#xff0c;我们不能少了干这事的目的&#xff0c;前端缓存有什么用&#xff1f; 缓存作用&#xff1a;加快资源获取速度&#xff0c;提高用户体验感&#xff0c;缓解服务端压力 我们带…