力扣打卡11:合并区间(比较器内联,引用传参的优化)
链接:56. 合并区间 - 力扣(LeetCode)

这道题可以用贪心。
首先将intervals的left(intervals[i][0])排序。
然后拿出第一个区间,比较后面相邻的区间:
当前right<后left,表示下一个区间独立了,没有与前一个区间重叠的了。
当前right<后left,表示重叠了,因为left排序了,因此right选择大的就行。
其中,在这道题里,我还学到了对于排序时的比较器函数,它有一些说法。
我首先用了自己写的静态比较器(因为sort不是类内函数,cmp如果不是静态,就会报错)(将cmp写在类外也行),但是这样的话,排序的每次比较,都会调用函数,造成开销,同时是值传递,会复制值,造成开销。因此程序运行时的速度会很慢。

但是,我们可以使用内联,增加编译的时间,减少运行的时间。可以通过以下方法内联:
1.lambda表达式
2.sort默认比较器(默认的比较器默认比较intervals[i][0])
3.inline标记函数,注意要const。因为sort传递给比较函数的参数通常是const对象,因此函数签名与默认行为不匹配,可能导致编译器拒绝内联,甚至报错。
inline bool cmp(const vector<int>& A, const vector<int>& B) {return A[0] < B[0];
}
当然,还可以使用引用传递,避免复制值,直接传递地址,防止造成的额外开销,(其实值的复制
才是最影响效率的)
bool cmp(vector<int>& A,vector<int>& B)
{return A[0]<B[0];
}

通过比较,可以看到,这方面的优化会提升不少i的程序运行效率。
下面是我的代码:
class Solution {
public:static bool cmp(vector<int> A,vector<int> B){return A[0]<B[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {//调用自己写的比较器,尤其是静态的,不会内联。每次调用比较函数都会有额外的函数调用开销。//sort(intervals.begin(),intervals.end(),cmp); //默认的比较器默认比较intervals[i][0]//sort(intervals.begin(),intervals.end());//lambda表达式,会内联sort(intervals.begin(), intervals.end(), [](const vector<int>& A, const vector<int>& B) {return A[0] < B[0];});vector<vector<int>> ans;vector<int> t=intervals[0];for(int i=1;i<intervals.size();i++){if(t[1]<intervals[i][0]){ans.push_back(t);t=intervals[i];}else{t[1]=max(t[1],intervals[i][1]);}}ans.push_back(t);return ans;}
};
相关文章:
力扣打卡11:合并区间(比较器内联,引用传参的优化)
链接:56. 合并区间 - 力扣(LeetCode) 这道题可以用贪心。 首先将intervals的left(intervals[i][0])排序。 然后拿出第一个区间,比较后面相邻的区间: 当前right<后left,表示下一…...
《 bilibili-起步级 用户模块接口文档 经验分享 ~》
bilibili - 用户模块接口文档 - 经验分享 ~ 数据库er关系图 : 迅速跳转链接 枚举码实体类 : 迅速跳转链接 使用apifox.json格式导入接口文档 步骤 登录Apifox。新建文件, 将代码粘贴到该文件, 并更改后缀为 .apifox.json进入项目,点击“导入”。选择“Apifox”格式…...
AES 与 SM4 加密算法:深度解析与对比
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
启保停电路如何接到PLC
传感器:NPN :棕:正 蓝:负 黑:信号 1M——>24V PNP:1M——>0V...
HTTP multipart/form-data 请求
序言 最近在写项目的过程中有一个需求是利用 HTTP 协议传输图片和视频,经过查询方法相应的方法发现使用 multipart/form-data 的方式,这是最常见处理二进制文件的表单编码类型。 学习了一下午,现在总结一下使用的方法和相关的知识点&#x…...
配置服务器的免密登录
在服务器中配置别名和免密登录 如果没有生成过公钥和密钥 ssh-keygen然后就生成了公钥和密钥,下一步进入.ssh文件夹 cd .ssh/可以看到文件夹中会多出来三个文件 id_rsa:密钥id_rsa.pub:公钥known_hosts:A通过ssh首次连接到B&am…...
普通遥控电动遮阳雨棚怎么接入米家并用苹果手机Siri控制
环境: 遥控电动遮阳雨棚 无线射频拷贝器 米家APP 问题描述: 普通遥控电动遮阳雨棚怎么接入米家并用苹果手机Siri控制 解决方案: 1.先看看遥控器射频参数,有些在里面板子上,要拆开才能看到,我这是433的 2.到网店…...
两种不同简缩极化的六个方程
方程1 (3*A*(b - a*1i 1) - A*((c d*1i)*(f1 f2*1i)*1i - (c d*1i)^2))*(a - b*1i)*1i 3*A*(b - a*1i 1) 2*(A*(c f2 d*1i - f1*1i) A*(c d*1i - (a b*1i)*(c d*1i)*1i))*(c - d*1i) (A*(c f2 d*1i - f1*1i) A*(c d*1i - (a b*1i)*(c d*1i)*1i))*(f1 - f2…...
环形缓冲区(Ring Buffer):概念、功能、使用场景与实现
一、概念 环形缓冲区(Ring Buffer),又称循环缓冲区,是一种用于数据缓冲的数据结构。其核心思想是将缓冲区视为一个环形结构,当数据写入到缓冲区的末尾时,会自动回绕到缓冲区的开头继续写入,形成…...
大连理工大学数据结构2003年硕士入学试题
大连理工大学2003年硕士入学试题 数据结构部分(共75分) 一、回答下列问题(20分) 1.循环队列用数组A[0..m—1)存放其数据元素。设tail指向其实际的队尾,front指向其实际队首的前一个位置,则当前队列中的数据元素有多少个…...
Master EDI 项目需求分析
Master Electronics 通过其全球分销网络,支持多种采购需求,确保能够为客户提供可靠的元件供应链解决方案,同时为快速高效的与全球伙伴建立合作,Master 选择通过EDI来实现与交易伙伴间的数据传输。 EDI为交易伙伴之间建立了一个安…...
图海寻径——图相关算法的奇幻探索之旅
一、图的表示 1. 邻接矩阵 (Adjacency Matrix) #include <iostream> #include <vector> #include <queue> #include <limits>using namespace std;class GraphMatrix { private:int numVertices;vector<vector<int>> adjMatrix;const st…...
亚马逊云科技re:Invent:生成式AI与全球布局
作为全球云计算和人工智能领域一年一度的顶级盛宴,亚马逊云科技2024 re:Invent全球大会吸引了超过6万名现场观众以及40多万名线上参会者。而大会上生成式AI的相关话题和内容,也成为了所有观众关注的焦点。 大会期间,亚马逊云科技全球服务副总…...
Android 因为混淆文件配置,打release包提示running R8问题处理
一、报错信息 Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in E:\workplace\xxxxxx\app\build\outputs\mapping\release\missing_rules.txt. Missing class org.mediakit.R$layout (refer…...
20241209给Ubuntu20.04系统的的交换分区增加为20GB的步骤
20241209给Ubuntu20.04系统的的交换分区增加为20GB的步骤 2024/12/9 21:10 缘起,编译中科创达的高通CM6125模块的Android10的时候,老报错。 编译环境可以编译荣品的RK3566的Android13/Buildroot。 以前荣品的RK3566的Android13的编译环境是可以编译通CM6…...
Centos7环境下nifi单机部署
Centos7环境下nifi单机部署 前言一、安装Nifi1.1 下载并解压1.2 修改配置文件 二、启动Nifi程序三、Nifi的简单使用3.1 文件移动3.2 本地文件传到HDFS 参考博客 前言 本以为在服务器上部署nifi很简单,跟着教程走就好,但是并没有成功,可能是因…...
如何通过轻易云实现金蝶云星空与旺店通数据集成
案例分享:柏为金蝶退料申请退料开单08.03 在企业的供应链管理中,数据的准确性和实时性至关重要。本文将重点介绍如何通过轻易云数据集成平台,将金蝶云星空的数据高效集成到旺店通旗舰奇门系统中,以实现柏为金蝶退料申请退料开单0…...
OSG开发笔记(三十七):OSG基于windows平台msvc2017x64编译器官方稳定版本OSG3.4.1搭建环境并移植Demo
若该文为原创文章,未经允许不得转载 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/144258047 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 长沙红胖子Qt…...
2024最新小猫咪PHP加密系统源码V1.4_本地API接口_带后台
2024最新小猫咪PHP加密系统源码V1.4_本地API接口_带后台 小猫咪PHP加密系统历时半年,它再一次迎来更新,更新加密算法(这应该是最后一次更新加密算法了,以后主要更新都在框架功能上面了),适配php56-php74&a…...
K8S OOM killer机制
当kubelet没来得及触发pod驱逐,使得节点内存耗尽时,将触发节点上的OOM killer机制; Linux上有个机制叫OOM killer(Out Of Memory killer),这个机制会在系统内存耗尽的情况下发挥作用,即根据一定…...
环境配置与基础教程:高效数据加载黑科技:替代默认 DataLoader,使用 NVIDIA DALI 加速 CPU 到 GPU 数据搬运
一、开篇:你的GPU真的在偷懒吗? 如果你是一位深度学习工程师,这个场景一定不陌生:你花重金租了一台搭载H100或A100的服务器,batch size拉满,模型架构精心调优,但打开nvidia-smi一看——GPU利用率只有20%-30%,大部分时间都在空转。CPU使用率却已经飙到100%,风扇呼呼作…...
别再死记硬背GPIO寄存器了!用STM32 HAL库和CubeMX快速实现LED流水灯与按键控制
解放双手:用STM32CubeMX和HAL库玩转GPIO控制 在嵌入式开发的世界里,GPIO控制就像学习编程时的"Hello World"一样基础而重要。但有多少开发者还在为记忆繁琐的寄存器配置而头疼?当项目周期压缩到以天为单位计算时,我们是…...
为什么92%的开发者首次调用PlayAI翻译API会触发token溢出?3步诊断清单+4类典型错误码速查表
更多请点击: https://intelliparadigm.com 第一章:PlayAI多语种同步翻译功能详解 PlayAI 的多语种同步翻译功能基于端到端神经机器翻译(NMT)架构,支持实时语音流输入与毫秒级文本输出,覆盖中、英、日、韩…...
Taotoken用量看板如何帮助团队清晰管理API成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken用量看板如何帮助团队清晰管理API成本 作为团队的技术负责人,在引入大模型能力支持多个业务项目时,…...
别再猜了!手把手教你识别并解码家里那些“身份不明”的红外遥控器(NEC/RC5/RC6初步判断)
红外遥控器协议侦探指南:快速识别NEC/RC5/RC6编码 家里积攒的旧遥控器越来越多,每个按键背后究竟藏着什么秘密?当你试图用智能家居系统整合这些设备时,第一步往往不是学习信号,而是破解这些"黑盒子"的通信语…...
TCP专栏-3.三次握手
什么是三次握手三次握手是指,在建立TCP连接时,客户端和服务端总共会发送三个数据包。只有三个数据包都发送成功后,TCP连接才会建立成功。否则,丢失任何一个包,都会导致连接建立失败。发送三个数据包的过程,…...
保姆级教程:手把手教你为NPM账号开启2FA双重认证(附Microsoft Authenticator配置)
从零到精通:NPM账号2FA双重认证实战指南 最近NPM包被劫持的事件频发,让不少开发者开始重新审视账号安全的重要性。作为JavaScript生态的核心基础设施,NPM账号一旦被盗,不仅可能导致私有包泄露,更可能危及依赖这些包的所…...
Chrome for Testing:如何用3个核心策略解决Web自动化测试的版本管理困境
Chrome for Testing:如何用3个核心策略解决Web自动化测试的版本管理困境 【免费下载链接】chrome-for-testing 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-for-testing 在Web自动化测试领域,版本兼容性问题每年导致企业损失数千小时的…...
ComfyUI-Inpaint-CropAndStitch:如何用局部修复技术将AI图像处理速度提升100倍
ComfyUI-Inpaint-CropAndStitch:如何用局部修复技术将AI图像处理速度提升100倍 【免费下载链接】ComfyUI-Inpaint-CropAndStitch ComfyUI nodes to crop before sampling and stitch back after sampling that speed up inpainting 项目地址: https://gitcode.com…...
CentOS8 彻底清除旧MySQL 重装 MySQL8.0
一、前言很多人安装 MySQL8 遇到:旧版本卸载不干净mysqld 启动失败找不到临时密码(无mysqld.log)密码策略报错 1819本地能连、远程无法连接本文为亲自实操、踩坑总结,命令全部可以直接复制执行,零思维负担。二、环境系…...
