37: 合并区间

2023-11-20

题目

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

思路

这道题我的思路完全正确,先把每段的左端点升序排列,然后用第一段做基准,后面i个首先用i的右端点和第一段的左端点比较
1.i <= 第一段,就直接把前一段写进二维数组
2.i > 第一段,i的右端点作为新的右端点base,以后用这个做比较

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        if(intervals.size() <= 1){
            return intervals; 
        }
        vector<vector<int>> revArr;
        quickSort(0, intervals.size()-1,intervals);
        int staDex = 0;//开始处
        int enDex = 0;//结束处
        int base = intervals[0][1];//前面的里面最大的右值
        for(int i=1;i<intervals.size();i++){
            if(intervals[i][0] <= base){
                if(intervals[i][1] <= base){
                    continue;
                }
                else{
                    base = intervals[i][1];
                    enDex = i;
                }
                 if(i == intervals.size()-1){
                    vector<int>arr = {intervals[staDex][0],intervals[i][1]}; 
                    revArr.push_back(arr);
                }
            }
            else if(intervals[i][0] > base){
                    vector<int>arr = {intervals[staDex][0],intervals[enDex][1]}; 
                    revArr.push_back(arr);
                    staDex = i;
                    enDex = i;       
                if(i == intervals.size()-1){
                    vector<int>arr = {intervals[i][0],intervals[i][1]}; 
                    revArr.push_back(arr);
                } 
            }
        }
        return revArr;
    }
   //快速排序(从小到大)
void quickSort(int left, int right, vector<vector<int>>& arr)
{
	if(left >= right)
		return;
	int i, j, base;
    vector<int> temp;
	i = left, j = right;
	base = arr[left][0];  //取最左边的数为基准数
	while (i < j)
	{
		while (arr[j][0] >= base && i < j)
			j--;
		while (arr[i][0] <= base && i < j)
			i++;
		if(i < j)
		{
			temp = arr[i];
			arr[i] = arr[j];
			arr[j] = temp;
		}
	}
	//基准数归位
	arr[left][0] = arr[i][0];
	arr[i][0] = base;
	quickSort(left, i - 1, arr);//递归左边
	quickSort(i + 1, right, arr);//递归右边
}
};

问题

1.排序排的太麻烦
2.只能写出部分输入,【1,10】,【2,4】,【4,6】这种没终止的地方

官方这个思路和我一样,实现代码却差太多

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        if (intervals.size() == 0) {
            return {};
        }
        sort(intervals.begin(), intervals.end());
        vector<vector<int>> merged;
        for (int i = 0; i < intervals.size(); ++i) {
            int L = intervals[i][0], R = intervals[i][1];
            if (!merged.size() || merged.back()[1] < L) {
                merged.push_back({L, R});
            }
            else {
                merged.back()[1] = max(merged.back()[1], R);
            }
        }
        return merged;
    }
};
  1. vector :: back()是“ vector”标头的库函数,用于访问矢量的最后一个元素,它返回对矢量的最后一个元素的引用。
  2. 人家是和已经排好的最后返回的数组作比较,我是在前面还做变化比较,高下立见
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

37: 合并区间 的相关文章

  • Python爬虫被封ip解决方案

    在使用 Python 程序进行网络爬虫开发时 可能因以下原因导致被封 IP 或封禁爬虫程序 1 频繁访问网站 爬虫程序可能会在很短的时间内访问网站很多次 从而对目标网站造成较大的负担和压力 这种行为容易引起目标网站的注意并被封禁IP或限制访

随机推荐

  • python 文件、文件夹和路径操作笔记

    记录python关于文件夹 文件和路径的一些常用操作 方便用时查询 常用的函数备注 os listdir 列出文件夹中所有文件 os path splitext 获取文件的后缀名 返回list 后缀在list 1 中 os path joi
  • 解决win10应用程序图标丢失问题

    1 问题 sublime 软件图标莫名其妙不显示 2 解决办法 1 进入cmd命令提示符 2 输入如下内容 taskkill im explorer exe f cd d userprofile appdata local del icon
  • 数据库之MySQL大全

    目录 1 MySQL数据库概述 2 MySQL的安装 Install MySQL 3 MySQL的配置 4 E R模型 5 创建数据库 6 数据类型 7 创建数据表 8 修改数据表 9 数据表约束 非空与默认值 10 数据表约束 唯一键与自
  • In-Context Retrieval-Augmented Language Models

    本文是LLM系列文章 针对 In Context Retrieval Augmented Language Models 的翻译 上下文检索增强语言模型 摘要 1 引言 2 相关工作 3 我们的框架 4 实验细节 5 具有现成检索器的上下文
  • 利用python(networkx库)画带权&不带权有向图、无向图

    利用python networkx库 画带权 不带权有向图 无向图 效果展示 分段代码 全部源代码 传送门 https download csdn net download weixin 44978992 12719404 当我们处理完几百
  • TCP可靠传输的工作原理-停止等待&连续的ARQ(一)

    在网络传输中 我们认为最理想的传输状态就是 1 传输信道不产生差错 2 不管发送方以多块的速度发送数据 接收方都能来得及接受以及处理这些数据 当然 这种只是理想状态 在实际运用中 几乎是不可能的 因此 我们需要采取一些可靠的传输协议 1 当
  • 物联网平台相关IoTgo

    相关资源 http www geek workshop com thread 12726 1 1 html https github com itead IoTgo https github com itead IoTgo Android
  • h5 关于视频video在微信中的自动播放

    本来video只用autoplay就可以自动播放的 但是由于微信的限制 autoplay在微信中失效 解决方式
  • 软件测试/测试用例设计题详细整理— 助攻高薪求职之路

    前言 8月底了 即将步入金九银十 又有很多小伙伴开始霍霍找工作了 笔者最近也会比较偏向发面试题哟 希望可以帮助到大家 最近收到很多应聘者反馈过来的笔试面试问题 其中有一部分是关于测试用例设计 对了对了笔者发现无论是刚入职场的测试新人还是在具
  • 【内网安全】——windows信息收集

    作者名 Demo不是emo 主页面链接 主页传送门 创作初心 一切为了她 座右铭 不要让时代的悲哀成为你的悲哀专研方向 网络安全 数据结构 每日emo 爱是深渊 目录 一 windows信息收集简介 二 信息收集大纲 1 本机信息 1 系统
  • 【Zabbix实战之故障处理篇】Zabbix-proxy服务启动失败解决方法

    Zabbix实战之故障处理篇 Zabbix proxy服务启动失败解决方法 一 故障说明 1 故障说明 2 故障截图 二 配置环境检查 1 检查zabbix proxy conf文件 2 检查mysql8 0数据库状态 三 故障处理思路 四
  • Mysql如何对两张表的相同字段,同时查询两张数据表

    前言 假设现在有两张数据表 表1如下 表2如下 表1和表2同时都再mysql的情况下 只有他们的uuid是一样的 其他字段信息不同 现在需要用sql语句根据uuid 同时将符合要求的数据查询出来 怎么做呢 sql语句同时查询两张表 废话不多
  • appium - 常用操作

    from appium webdriver common touch action import TouchAction from appium webdriver common multi action import MultiActio
  • 【年度大戏】勒索”嘿客“无间道之战

    年度大戏 勒索 嘿客 无间道之战 为了保护多位表演群众 以下内容均以化名出现 所有图片取自对当事人的报告和贴吧原贴 历史群消息中 并均对ID打码处理 25仔的就不打了 本文只陈述基本事实基本推断 不做结论性推断 内容均无 伪造 瞎编 脑补意
  • Oracle 实现select(查询)的结果集随机顺序展示

    在一些需求中会要求打乱结果集顺序随机展示 Oracle的实现方式如下 select from table order by dbms random value 这种用法没有参数 会返回一个具有38位精度的数值 范围从0 0到1 0 但不包括
  • stm32实用篇5:HAL库 DHT11 驱动

    DHT11是很常用的温湿度传感器 时序也比较简单 如下所示 直接给出HAL库的驱动 1 微秒级延时函数 HAL库并没有直接的微秒级延时函数 下面是自己实现的微秒堵塞延时函数 使用定时器TIM3 brief 微秒级延时 void bsp de
  • 格式化时间用了YYYY-MM-dd,元旦当天老板喊我回去改Bug!

    视频福利推荐 2T免费学习视频 内含SSM Spring全家桶 微服务 MySQL MyCat 集群 分布式 中间件 Linux 网络 多线程 Jenkins Nexus Docker ELK等等免费学习视频 持续更新 往期热门文章 1 往
  • Linux面试题1

    一 取出 etc passwd文件中shell出现的次数 问题 下面是一个 etc passwd文件的部分内容 题目要求取出shell并统计次数 shell是指后面的 bin bash sbin nologin等 如下面 bin bash出
  • 主线剧情0.0-Linux学习资源大综合

    Linux 学习资源大综合 对收集到的比较丰富的 Linux 学习相关的资料进行整理 注 如果链接挂了请告诉我 如果链接里的内容被删了那么直接搜文章名字试试也许会搜出来很多转载的 备份 注 在 Github 上的原版文章日后可能会更新 在其
  • 37: 合并区间

    题目 以数组 intervals 表示若干个区间的集合 其中单个区间为 intervals i starti endi 请你合并所有重叠的区间 并返回 一个不重叠的区间数组 该数组需恰好覆盖输入中的所有区间 思路 这道题我的思路完全正确 先