新闻详情

新闻详情

首页 / 资讯中心 / 详情

56. 合并区间(扫描线)

发布时间:2026/9/30 1:40:30来源:尧图网络
56. 合并区间(扫描线)
解决方法56. 合并区间 - 力扣LeetCode按照区间的左边界排序假如有区间已经按照左边界排好序[ij] [kg]如果[ij] [kg], 如果k大于j则[ij]和[kg]一定不再一个区间。如果[ij] [kg], 如果k小于j则[ij]和[kg]一定在一个区间。区间末尾取j和g的最大值。合并后的区间为[imax(j,g)]class Solution { public: vectorvectorint merge(vectorvectorint intervals) { vectorvectorint result; if(intervals.size() 0) { return result; } // 按照区间的左边做从小到大排序 auto cmp [](const vectorint a, const vectorint b) { return a[0] b[0]; }; sort(intervals.begin(), intervals.end(), cmp); result.push_back(intervals[0]); for(int i 1; i intervals.size(); i) { // 如果[ij] [kg], 如果k大于j则[ij]和[kg]一定不再一个区间。 if(intervals[i][0] result.back()[1]) { result.push_back(intervals[i]); } else { // 如果[ij] [kg], 如果k小于j则[ij]和[kg]一定在一个区间。区间末尾取j和g的最大值 result.back()[1] max(result.back()[1], intervals[i][1]); } } return result; } };/** * Definition of Interval: * class Interval { * public: * int start, end; * Interval(int start, int end) { * this-start start; * this-end end; * } * } */ class Solution { public: /** * param intervals: interval list. * return: A new interval list. */ struct Node { int val; int flag; Node(int v, int f) { val v; flag f; } }; vectorInterval merge(vectorInterval intervals) { // write your code here int len intervals.size(); if (len 1) { return intervals; } vectorNode nodes; for (auto e : intervals) { nodes.push_back(Node(e.start, -1)); nodes.push_back(Node(e.end, 1)); } sort(nodes.begin(), nodes.end(), [](Node a, Node b) { if (a.val b.val) { return true; } else if (a.val b.val a.flag b.flag) { return true; } return false; }); unordered_mapint, int table; int sum 0; vectorInterval result; int start 0; for (auto n : nodes) { if (sum 0) { start n.val; } sum n.flag; if (sum 0) { Interval interval(start, n.val); result.push_back(interval); } } return result; } };扫描线累加和为0表示已经构成一个完整的区间。如果a区间的last和b区间的first相同则b区间的first应该排在前面这样可以保证合并为一个区间
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

将中断优先级设置#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 2 2026/9/30 2:27:29

将中断优先级设置#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 2

在FreeRTOSConfig.h中,#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 2这个参数是内核管控的中断优先级参数,如果中断的优先级比这个高,则不受中断的管控。临界区保护。OSIF_UNIFIED_ENTER_CRITICALOSIF_UNIFIED_EXIT_CRITICAL在进…

阅读更多 →
基于 Vue.js 的 iView UI 组件库:安装引入、Slider 实战与源码级架构解析 2026/9/30 2:27:29

基于 Vue.js 的 iView UI 组件库:安装引入、Slider 实战与源码级架构解析

前端UI组件 【免费下载链接】iview A high quality UI Toolkit built on Vue.js 2.0 项目地址: https://gitcode.com/gh_mirrors/iv/iview 点击查看 免费下载 iView 是一套基于 Vue.js 构建的高质量 UI 组件库,在 README.md 中官方将其定位为 "A h…

阅读更多 →
Boxhero 自动化实战:基于 Rube MCP(Composio)Toolkit 的 Claude Skill 完整指南 2026/9/30 2:27:29

Boxhero 自动化实战:基于 Rube MCP(Composio)Toolkit 的 Claude Skill 完整指南

AI 技能AI 插件人工智能工作流自动化 【免费下载链接】awesome-claude-skills A curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-claude-skills 点击…

阅读更多 →
qsort 从入门到精通:用法详解 + 模拟实现(C语言) 2026/9/30 2:27:16

qsort 从入门到精通:用法详解 + 模拟实现(C语言)

目录 一、qosrt 的使用 声明: 返回值规则: qsort 的使用: 排序整型数据: 排序结构体数据: 二、qsort 模拟实现 冒泡排序: 存在的问题: 解决办法: 1. 改造参数 2. 改造比较方法 3. …

阅读更多 →
基于神经网络RBF-ADRC自抗扰控制的四旋翼无人机优化ESO调参仿真 2026/9/30 2:27:16

基于神经网络RBF-ADRC自抗扰控制的四旋翼无人机优化ESO调参仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信🍊个人信条:做科研&#xff0c…

阅读更多 →
二维亥姆霍兹线圈|平面双向均匀磁场发生设备科普 2026/9/30 2:27:10

二维亥姆霍兹线圈|平面双向均匀磁场发生设备科普

在磁传感器标定、弱磁环境模拟、二维磁场响应测试、精密电磁实验等科研场景中,单一维度磁场设备无法满足平面多方向磁场调控需求。二维亥姆霍兹线圈作为标准化平面磁场发生装置,可实现X、Z双轴独立可控均匀磁场输出,凭借嵌套式稳固结构、优良…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉