汇总区间,合并区间

题目一:

代码如下:


vector<string> summaryRanges(vector<int>& nums)
{
	vector<string> ret;
	if (nums.size() == 0)
		return ret;
	int n = nums.size();
	int i = 0;
	while (i < n)
	{
		int prev = i;
		++i;
		while (i < n && nums[i] == nums[i - 1] + 1)
			++i;
		int cur = i - 1;
		string tmp = to_string(nums[prev]);
		if (prev < cur)
		{
			tmp += "->";
			tmp += to_string(nums[cur]);
		}
		ret.push_back(tmp);
	}
	return ret;
}

思路整理:其实是将连续的元素进行合并,单独的元素自己成为一个区间即可。

具体逻辑以及变量解释:

<1>结合序列有序的性质,i遍历整个序列,prev指向连续区间的左端点,cur指向连续区间的右端点。

<2>当nums[i] - nums[i - 1] == 1时,说明区间连续递增,此时i向后移动。

<3>否则说明找到连续递增区间的右区间的下一个位置,此时cur应该为 i - 1,再通过判断左右端点是否重合来判定区间中元素个数。从而确定是否要添加特定符号即可,再将结果存入ret中,最后返回ret即可。

题目二:

代码如下:

vector<vector<int>> merge(vector<vector<int>>& intervals)
{
	vector<vector<int>> ret;
	sort(intervals.begin(), intervals.end());

	int i = 0;
	while (i < intervals.size())
	{
		int left = intervals[i][0];
		int right = intervals[i][1];
		int j = i + 1;
		while (j < intervals.size() && intervals[j][0] <= right)
		{
			right = max(right, intervals[j][1]);//取两者右区间较大值
			++j;
		}
		ret.push_back({ left, right });
		i = j;//跳过已经合并的区间
	}
	return ret;
}

思路整理:通过每个部分的第二个元素和后面每个部分的第一个元素对比,如果当前部分的第二个元素比后面部分的第一个元素大,就可以合并。否则就不合并。开始尝试合并新的区间即可。

具体逻辑及变量解释:

<1>首先通过每个部分的第一个元素进行排序(便于合并操作)。

<2>i用来遍历整个序列,left代表每个小部分的第一个元素,right代表每个小部分的第二个元素,j用来在每次合并时进行遍历。

<3>j指向i的下一个,判断intervals[i][1]是否大于等于intervals[j][0],如果是,那么j后移,直到条件不符合,将合并的区间放入最终返回的结果中。

<4>i = j,跳过已经合并的区间即可。

<5>返回最终结果。

另外,还有一道57题插入区间,其实可以直接插入序列,然后进行排序之后再进行一次区间合并就行,逻辑和这道题是一样的。

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

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

相关文章

java使用资源过高排查

在生产环境中有可能出现某java程序使用资源特别严重&#xff0c;这就需要找到该java进程&#xff0c;然后通过进程去找到是哪个线程的问题&#xff0c;这里我们就是用pidstat工具来排查一下 安装pidstat工具 yum -y install sysstat 查看java服务的pid jps 通过pid查看线…

Feign:使用接口方式调用服务

一、什么是Feign Feign是一个http请求调用的轻量级框架&#xff0c;可以以Java接口注解的方式调用Http请求&#xff0c;而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解&#xff0c;将请求模板化&#xff0c;当实际调用的时候&#xff0c;传入参数&…

【模型架构】学习RNN、LSTM、TextCNN和Transformer以及PyTorch代码实现

一、前言 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;模型架构的不断发展极大地推动了技术的进步。从早期的循环神经网络&#xff08;RNN&#xff09;到长短期记忆网络&#xff08;LSTM&#xff09;、Transformer再到当下火热的Mamba&#xff08;放在下一节&a…

ES升级--02--kibana安装与启动

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Kibana官网文档https://www.elastic.co/guide/cn/kibana/current/targz.html 1.官网下载https://www.elastic.co/cn/downloads/past-releases#kibana 2.解压软件3.配…

揭秘百度不为人知的“秘密”(免费AI工具一直就在身边)

文章目录 &#x1f4d6; 介绍 &#x1f4d6;&#x1f3e1; 演示环境 &#x1f3e1;&#x1f4d2; 文章内容 &#x1f4d2;&#x1f4a1; 功能介绍&#x1f388; 海量图片资源&#x1f388; AI图像处理工具&#x1f388; 图像生成功能 &#x1f4e2; 获取方式⚓️ 相关链接 ⚓️…

防止数据泄露的方法你知道几种?哪种好用?

一、好用的防泄密方法是哪种&#xff1f; 简单且好用的防泄密方法则是使用数据加密防泄密系统&#xff0c;保护企业数据安全&#xff0c;防止泄露问题的出现&#xff0c;维护各方利益。那么&#xff0c;哪个防泄密系统好用呢&#xff1f;比如&#xff1a;迅软加密防泄密系统等…

python | 类的实现

和实例有关的&#xff0c;通过对象名&#xff0c;打点调用 实例属性&#xff0c;实例方法 stuStudent("XiaoMing",18) print(stu.name) 类属性、静态方法和类方法都是通过类名直接调用 Student.name 静态方法和类方法都不能调用实例属性和实例方法 动态绑定 如果是函…

【html】用html模拟微信布局

您做的这个模拟微信布局的作品很不错,使用了Flexbox布局来实现元素的灵活排列。以下是关于您代码的一些分析和建议: 效果图: 代码分析: 全局样式重置: 您使用了* { margin: 0; padding: 0; }来重置所有元素的边距。这是一个常见的做法,可以避免不同浏览器默认样式的差…

服务器的初始化

服务器的初始化 新的服务器到手&#xff0c;部署服务器的初始化。 1、配置ip地址 网关 dns解析&#xff08;static&#xff09;内网和外网 2、安装源&#xff0c;外网&#xff08;在线即可&#xff09;内网&#xff08;只能用源码包编译安装&#xff09; 3、磁盘分区&#…

Python零基础-下【详细】

接上篇继续&#xff1a; Python零基础-中【详细】-CSDN博客 目录 十七、网络编程 1、初识socket &#xff08;1&#xff09;socket理解 &#xff08;2&#xff09;图解socket &#xff08;3&#xff09;戏说socket &#xff08;4&#xff09;网络服务 &#xff08;5&a…

(CPU/GPU)粒子继承贴图颜色发射

GetRandomInfo节点(复制贴进scratch pad Scripts) Begin Object Class/Script/NiagaraEditor.NiagaraClipboardContent Name"NiagaraClipboardContent_22" ExportPath/Script/NiagaraEditor.NiagaraClipboardContent"/Engine/Transient.NiagaraClipboardConten…

AIGC智能办公实战 课程,祝你事业新高度

在数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面&#xff0c;从智能家居到自动驾驶&#xff0c;从医疗诊断到金融分析&#xff0c;AI助手正在改变我们的工作方式和生活质量。那么&#xff0c;你是否想过自己也能从零开始&#xff0c;…

实用篇| huggingface网络不通

之前文章《Transformer原理》中介绍过,Transformers 是由 Hugging Face 开发的一个包&#xff0c;支持加载目前绝大部分的预训练模型。随着 BERT、GPT 等大规模语言模型的兴起&#xff0c;越来越多的公司和研究者采用 Transformers 库来构建应用。 Hugging Face是一家美国公司…

举个栗子!Tableau 技巧(275):散点图的数值重合怎么办?抖动图来咯

散点图是大家经常使用的分析图表&#xff0c;但是如果出现多个数据点具有完全相同的 X 和 Y 值&#xff0c;多个散点重叠并隐藏后&#xff0c;查看数据就很不方便了。 遇到这种情况&#xff0c;该怎么办&#xff1f;其实可以尝试将数据点稍微抖动一下&#xff01;如下图&#…

使用 Vue 3 和 vue-print-nb 插件实现复杂申请表的打印

文章目录 1&#xff1a;创建 Vue 3 项目2&#xff1a;安装 vue-print-nb 插件3&#xff1a;配置 vue-print-nb 插件4&#xff1a;创建一个复杂的申请表5&#xff1a;使用 ApplicationForm 组件6&#xff1a;运行项目 在开发管理系统或申请表打印功能时&#xff0c;打印功能是一…

MagicTime - 文本生成视频,AI生成延时视频软件 本地一键包

MagicTime 是一款由北大团队开发的新框架&#xff0c;是一种基于文本描述生成高质量变化视频的模型。它通过学习时间流逝视频中的物理知识&#xff0c;实现了高度逼真的变化过程模拟。用于生成可变时间延时视频&#xff08; Metamorphic Videos &#xff09;。简单一点来说&…

G4 - 可控手势生成 CGAN

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 代码总结与心得 代码 关于CGAN的原理上节已经讲过&#xff0c;这次主要是编写代码加载上节训练后的模型来进行指定条件的生成 图像的生成其实只需要使用…

艾体宝方案 | redis赋能游戏开发,游戏玩家纵享丝滑

掉线&#xff0c;加载缓慢&#xff0c;反馈无跟进&#xff0c;这些令游戏玩家炸毛的问题&#xff0c;同时也是游戏开发者关注的问题。开发者将目光投向了Redis&#xff0c;一个实时数据平台&#xff0c;告别卡顿延迟&#xff01; 一、玩家不掉线&#xff0c;游戏更丝滑 在大型…

Redis学习笔记【基础篇】

SQL vs NOSQL SQL&#xff08;Structured Query Language&#xff09;和NoSQL&#xff08;Not Only SQL&#xff09;是两种不同的数据库处理方式&#xff0c;它们在多个维度上有所差异&#xff0c;主要区别包括&#xff1a; 数据结构: SQL&#xff08;关系型数据库&#xff09;…

【OceanBase诊断调优】—— obdiag 工具助力OceanBase数据库诊断调优(DBA 从入门到实践第八期)

1. 前言 昨天给大家分享了【DBA从入门到实践】第八期&#xff1a;OceanBase数据库诊断调优、认证体系和用户实践 中obdiag的部分&#xff0c;今天将其中的内容以博客的形式给大家展开一下&#xff0c;方便大家阅读。 2. 正文 在介绍敏捷诊断工具之前&#xff0c;先说说OceanBa…