news 2026/1/20 17:08:06

合并区间(二维vector使用,多维vector使用默认sort)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
合并区间(二维vector使用,多维vector使用默认sort)

注意点:

1.sort自带的比较函数是支持多维数组比较的,使用的是字典序比较;

2.对于多维的vector,可以使用back,front,at等函数

比较例子:


二维 vector 示例

vector<vector<int>> v = { {2,5}, {1,3}, {1,2} }; sort(v.begin(), v.end());

比较过程(字典序)

  1. 比较[2,5][1,3]

    • 第一元素 2 > 1 →[1,3] < [2,5]

  2. 比较[2,5][1,2]

    • 第一元素 2 > 1 →[1,2] < [2,5]

  3. 比较[1,3][1,2]

    • 第一元素相等 1 == 1 → 比第二元素 3 > 2 →[1,2] < [1,3]

排序结果:

{ {1,2}, {1,3}, {2,5} }

左端点升序排列,相同左端点按右端点升序,正好符合区间合并需求。


三维 vector 示例

vector<vector<vector<int>>> arr = { {{1,2},{3,4}}, {{1,2},{3,3}}, {{0,9}}, {{1,1},{2,2}} }; sort(arr.begin(), arr.end());

比较过程(逐层字典序)

  1. 比较{{1,2},{3,4}}{{1,2},{3,3}}

    • 第一行[1,2] == [1,2]→ 比第二行[3,4] > [3,3]→ 后者更小

  2. 比较{{0,9}}与其它

    • 第一行[0,9]小于[1,2]→ 排最前

  3. 比较{{1,1},{2,2}}{{1,2},{3,3}}

    • 第一行[1,1] < [1,2]→ 排在前

排序结果:

{ {{0,9}}, {{1,1},{2,2}}, {{1,2},{3,3}}, {{1,2},{3,4}} }

外层二维数组按字典序排列,内层数组也按字典序排列。


总结规律

  • 二维 vector:先比每行第一个元素,不同立即决定顺序;相同则比第二个元素

  • 三维 vector:先比第一层的第一行第一个元素 → 若相等比第一行第二个元素 → 若仍相等比下一行,依此类推

  • 任意维度:逐层逐元素比较 → 遇到不同立即返回 → 相同继续比较下一位

class Solution { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { sort(intervals.begin(),intervals.end()); vector<vector<int>> tmp; for(int i =0;i<intervals.size();i++){ int L=intervals[i][0]; int R=intervals[i][1]; if(!tmp.size() || L>tmp.back()[1]) tmp.push_back({L,R}); else tmp.back()[1]=tmp.back()[1]>R?tmp.back()[1]:R; } return tmp; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/19 14:35:35

ubuntu通过公网Ubuntu服务器远程桌面连接私网IPUbuntu

私网Ubuntu主机-------Ubuntu服务器---------私网IP Ubuntu主机第一部分&#xff1a;公网 Ubuntu 服务器部署 frps&#xff08;服务端&#xff09;步骤 1&#xff1a;安装依赖并下载 frp# 切换root&#xff08;避免频繁sudo&#xff09; sudo -i # 安装wget&#xff08;若未安装…

作者头像 李华
网站建设 2026/1/12 2:42:55

Unity学习笔记(十九)GUI控件(三)

窗口普通窗口private Rect dragWindow new Rect(400, 400, 200, 150);第一个参数 id是窗口的唯一ID&#xff0c;不要和别的窗口重复委托参数 是用于绘制窗口的函数 传入即可GUI.Window(1, new Rect(100, 100, 200, 150),DrawWindow,"测试窗口");id 除了区分不同窗口…

作者头像 李华
网站建设 2026/1/19 12:57:02

IPA 深度混淆是什么意思?分析其与普通混淆的区别

在一些安全讨论里&#xff0c;“IPA 深度混淆”这个词经常被提到&#xff0c;但真正落到工程实践时&#xff0c;不同团队对它的理解差异很大。 有人把它等同于“混淆得更狠一点”&#xff0c;也有人认为这是某种“高强度黑科技”。 从我接触过的项目来看&#xff0c;IPA 深度混…

作者头像 李华
网站建设 2026/1/9 14:12:35

33、Linux 内存管理全解析

Linux 内存管理全解析 1. 内存统计信息获取 在 Linux 系统中,我们可以通过调用 mallinfo() 函数来获取内存分配的统计信息。这个函数会以 mallinfo 结构体的形式返回统计数据,结构体是通过值传递,而非指针传递。 mallinfo 结构体的定义在 <malloc.h> 头文件…

作者头像 李华
网站建设 2026/1/19 3:08:57

5.回溯算法

装载问题&#xff1a;问题描述&#xff1a;有一批共n个集装箱要装上载重量为c的轮船&#xff0c;其中集装箱i重量为wi&#xff0c;集装箱装载问题要求确定在不超过轮船载重量的前提下&#xff0c;将尽可能多的集装箱装上轮船&#xff0c;且集装箱的重量之和最大回溯算法实现&am…

作者头像 李华
网站建设 2026/1/18 11:24:32

嵌入式模组温控策略

一、为什么需要温控策略? 嵌入式模组(尤其是通信模组如4G/5G、Cat.1等)在运行时会发热,主要热源包括: 基带处理器:信号编解码、协议处理 射频功率放大器:信号发射时功耗最大 电源管理芯片 环境温度影响:工业环境可达-40C ~ +85C 温度过高会导致:性能降频、通信中…

作者头像 李华