力扣第56题 合并区间 c++ 贪心

题目

56. 合并区间

中等

相关标签

数组   排序

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

示例 1:

输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。

提示:

  • 1 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 104

思路和解题方法

  • 思路是先对区间数组 intervals 按照区间的起始位置进行排序。然后,使用一个结果数组 ans 来存储合并后的区间。
  • 首先,将排序后的第一个区间加入结果数组 ans。
  • 然后,从第二个区间开始遍历,判断当前区间与结果数组中最后一个区间的关系:
  • 如果当前区间被包含在前一个区间中(即当前区间的结束位置小于等于前一个区间的结束位置),则无需合并,继续遍历下一个区间。
  • 如果当前区间与前一个区间有重叠部分(即当前区间的起始位置小于等于前一个区间的结束位置),则合并两个区间,更新前一个区间的结束位置为当前区间的结束位置。
  • 如果当前区间与前一个区间没有重叠部分,则直接将当前区间加入结果数组。
  • 最终,返回结果数组 ans 即为合并后的区间。

复杂度

        时间复杂度:

                O(nlogn)

时间复杂度分析:

  • 排序的时间复杂度为O(nlogn),其中n是区间的个数。
  • 遍历区间的时间复杂度为O(n),其中n是区间的个数。

因此,总的时间复杂度为O(nlogn)。

        空间复杂度

                O(n)

空间复杂度分析:

  • 结果数组ans的空间复杂度为O(n),其中n是区间的个数。

c++ 代码

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) {vector<vector<int>> ans; // 存储合并后的区间结果if (intervals.size() == 0) return ans; // 如果输入为空,则直接返回空结果sort(intervals.begin(), intervals.end(), cmp); // 按区间的起始位置进行排序ans.push_back(intervals[0]); // 将第一个区间加入结果数组for (int i = 1; i < intervals.size(); i++) {if (ans.back()[1] >= intervals[i][1]) { // 当前区间被包含在前一个区间中,无需合并continue;} else if (ans.back()[1] >= intervals[i][0]) { // 当前区间与前一个区间有重叠部分,合并ans.back()[1] = intervals[i][1]; // 更新前一个区间的结束位置} else {ans.push_back(intervals[i]); // 当前区间与前一个区间无重叠部分,直接加入结果数组}}return ans;}
};

觉得有用的话可以点点赞,支持一下。

如果愿意的话关注一下。会对你有更多的帮助。

每天都会不定时更新哦  >人<  。

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

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

相关文章

Flutter——最详细(Scaffold)使用教程

Scaffold简介 相当于界面的主体&#xff08;类似于安卓最外层PhoneWindow&#xff09;&#xff0c;组件的展示都必须依附于它。 使用场景&#xff1a; 每一个界面都是脚手架&#xff0c;通过它来进行架构实现&#xff0c;优美的布局效果。 属性作用appBar顶部的标题栏body显示整…

Day 11 python学习笔记

模块 内置模块 random random&#xff1a;随机数模块 我们可以在解释器中看到其蕴含的方法 接下来我解释一些常用的方法&#xff1a; random.random( ) random.random( ) 返回0-1的随机数 [0,1) >>> random.random() 0.364183511476754 random.randint(n,m) r…

Java题:查找单链表中第 k 个节点元素的值

遇到过一道奇奇怪怪的Java题&#xff0c;就整理出自己的想法&#xff0c;不知道对不对&#xff0c;还望大佬们指导。 题目 给定一个单链表&#xff0c;查找单链表中第 k 个节点元素的值&#xff0c;同时要求使用时间复杂度低的算法实现。 单链表的定义如下&#xff1a; cla…

2023年Flutter教程_Flutter+Getx仿小米商城项目实战视频教程-V3版

Flutter是谷歌公司开发的一款开源、免费的UI框架&#xff0c;可以让我们快速的在Android和iOS上构建高质量App。它最大的特点就是跨平台、以及高性能。 目前 Flutter 已经支持 iOS、Android、Web、Windows、macOS、Linux 的跨平台开发。 GetX 是 Flutter 上的一个轻量且强大的解…

AI for Security:智能化安全对抗的困境

本篇文章主要结合自己的亲身经历和体会表达一下对AI for Security的看法,整体态度偏消极。 0x01 背景 本段将由大到小从国家、网上公开资料、项目三个方面说明智能化安全对抗时代的来临。 正如有时候觉得学得好不如嫁得好,在网络安全方面有时也是学得好不如运气好跟上了历史…

SAP ABAP 报表输出成 excel 统计图形 (RFC : GFW_PRES_SHOW_MULT)

SAP 预设了一个类型组 GFW &#xff0c;做简单的excel图形输出 话不多说&#xff0c;直接上代码&#xff1a; *&---------------------------------------------------------------------* *& Report ZCYCLE057 *&----------------------------------------------…

71 搜索二维矩阵

搜索二维矩阵 题解1 Z字查找(tricky)题解2 一次二分查找题解3 两次二分查找 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target …

如何在k8s的Java服务镜像(Linux)中设置中文字体

问题描述&#xff1a;服务是基于springboot的Java服务&#xff0c;在项目上是通过Maven的谷歌插件打包&#xff0c;再由k8s部署的。k8s的镜像就是一个Java服务&#xff0c;Java服务用到了中文字体。 解决这个问题首先需要搞定镜像字体的问题。有很多类似的解决方案&#xff0c;…

图解java.util.concurrent并发包源码系列——深入理解ConcurrentHashMap并发容器,看完薪水涨一千

图解java.util.concurrent并发包源码系列——深入理解ConcurrentHashMap并发容器 HashMap简单介绍HashMap在并发场景下的问题HashMap在并发场景下的替代方案ConcurrentHashMap如何在线程安全的前提下提升并发度1.71.8 JDK1.7的ConcurrentHashMap源码JDK1.8的ConcurrentHashMap源…

python 字符串str与字典dict转换

目录 python 字符串str与字典dict转换 字典转字符串字符串转字典 带引号不带引号 python 字符串str与字典dict转换 字典转字符串 c {a: 1, b: 1} bstr(c) print(b,type(b)) 字符串转字典 字符串转字典分两种情况&#xff0c;需要根据你的字符串内容是否带引号决定&#xff0c;…

网络流学习笔记

网络流基础 基本概念 源点&#xff08;source&#xff09; s s s&#xff0c;汇点 t t t。 容量&#xff1a;约等于边权。不存在的边流量可视为 0 0 0。 ( u , v ) (u,v) (u,v) 的流量通常记为 c ( u , v ) c(u,v) c(u,v)&#xff08;capacity&#xff09;。 流&#xff…

解决MySQL大版本升级导致.Net(C#)程序连接报错问题

数据库版本从MySQL 5.7.21 升级到 MySQL8.0.21 数据升级完成后&#xff0c;直接修改程序的数据库连接配置信息 <connectionStrings> <add name"myConnectionString" connectionString"server192.168.31.200;uidapp;pwdFgTDkn0q!75;databasemail;&q…

C# 超链接 LinkLabel 类 控件

LinkLabel 类 参考 反馈 定义 命名空间: System.Windows.Forms 程序集: System.Windows.Forms.dll 表示可显示超链接的 Windows 标签控件。 C#复制 public class LinkLabel : System.Windows.Forms.Label, System.Windows.Forms.IButtonControl 继承 Object Marsh…

【语义分割】语义分割概念及算法介绍

文章目录 一、基本概念二、研究现状2.1 传统算法2.2 深度学习方法 三、数据集及评价指标3.1 常用数据集3.2 常用指标 四、经典模型参考资料 一、基本概念 语义分割是计算机视觉中很重要的一个方向。不同于目标检测和识别&#xff0c;语义分割实现了图像像素级的分类。它能够将…

使用langchain-chatchat里,faiss库中报错: AssertionError ,位置:assert d == self.d

发生报错&#xff1a; AssertionError&#xff0c;发生位置&#xff1a;class_wrappers.py里 assert d self.d&#xff0c;假如输出语句&#xff0c;查看到是因为d和self.d维度不匹配造成&#xff0c;解决方式&#xff1a; 删除langchain-chatchat/knowledge_base里的info.db…

【iOS免越狱】利用IOS自动化web-driver-agent_appium-实现自动点击+滑动屏幕

1.目标 在做饭、锻炼等无法腾出双手的场景中&#xff0c;想刷刷抖音 刷抖音的时候有太多的广告 如何解决痛点 抖音自动播放下一个视频 iOS系统高版本无法 越狱 安装插件 2.操作环境 MAC一台&#xff0c;安装 Xcode iPhone一台&#xff0c;16 系统以上最佳 3.流程 下载最…

Python 算法高级篇:堆排序的优化与应用

Python 算法高级篇&#xff1a;堆排序的优化与应用 引言 1. 什么是堆&#xff1f;2. 堆的性质3. 堆排序的基本原理4. 堆排序的 Python 实现5. 堆排序的性能和优化6. 堆排序的实际应用7. 总结 引言 堆排序是一种高效的排序算法&#xff0c;它基于数据结构中的堆这一概念。堆排序…

C++进阶语法——OOP(面向对象)【学习笔记(四)】

文章目录 1、C OOP⾯向对象开发1.1 类&#xff08;classes&#xff09;和对象&#xff08;objects&#xff09;1.2 public、private、protected访问权限1.3 实现成员⽅法1.4 构造函数&#xff08;constructor&#xff09;和 析构函数&#xff08;destructor&#xff09;1.4.1 构…

Java基础 多线程

1.多线程创建方式1&#xff0c;继承Thread类&#xff1a; 2.多线程创建方式2&#xff1a; 匿名内部类写法 package thread;public class ThreadTest {public static void main(String[] args) {Runnable runnable new Runnable() {Overridepublic void run() {for (int i 0…

笔记本电脑的摄像头找不到黑屏解决办法

这种问题一般来说就是缺少驱动&#xff0c;就要下载驱动。 问题&#xff1a; 解决办法&#xff1a; 1.进入联想官网下载驱动 网站&#xff1a;https://newsupport.lenovo.com.cn/driveDownloads_index.html?v9d9bc7ad5023ef3c3d5e3cf386e2f187 2.下载主机编号检测工具 3.下…