当前位置: 首页 > news >正文

合并区间(56)

56. 合并区间 - 力扣(LeetCode)

解法:

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) 
    {
        if (intervals.size() == 1) {
            return intervals;
        }

        //现根据每一项的第一个值,进行排序
        sort(intervals.begin(), 
            intervals.end(), 
            [](vector<int> & left, vector<int> & right) {
                return left.front() < right.front();
            }
        );

        int cur_left = intervals[0].front();
        int cur_right = intervals[0].back();
        int cur_index = 0;

        for (int i = 1; i < intervals.size(); ++i) {
            //i项的最小值大于前面已经合并项的最大值,无法继续合并,输出一个新的区间
            if (intervals[i].front() > cur_right) {
                intervals[cur_index++] = {cur_left, cur_right};
                cur_left = intervals[i].front();
                cur_right = intervals[i].back();
            }{
                //和前项的区间合并
                cur_right = max(cur_right, intervals[i].back());
            }
        }

        //添加最后一个区间
        intervals[cur_index++] = {cur_left, cur_right};
        //数据截断
        intervals.resize(cur_index);

    
        return intervals;
    }
};

总结:

时间计算复杂度O(NlogN)---sort 排序,空间复杂度O(1),不需要重新构建数组,这里面通过cur_index记录intervals数组的当前填充位置,算法细节见注释。

http://www.dtcms.com/a/31814.html

相关文章:

  • [创业之路-321]:创新开拓思维和经营管理思维的比较
  • rkipc main.c 中 rk_param_init函数分析
  • vue3项目开发总结
  • Java 12~14 新特性
  • 力扣LeetCode: 2506 统计相似字符串对的数目
  • 围棋打谱应用软件设计制作
  • C++ Primer 容器库概述
  • RocketMq\Kafka如何保障消息不丢失?
  • 【微服务优化】ELK日志聚合与查询性能提升实战指南
  • 【多线程】线程安全
  • [LeetCode]day27 28. 找出字符串中第一个匹配项的下标
  • 音视频入门基础:RTP专题(10)——FFmpeg源码中,解析RTP header的实现
  • Docker仿真宇树狗GO1
  • Spring Security+JWT+Redis实现项目级前后端分离认证授权
  • 【DeepSeek-R1背后的技术】系列九:MLA(Multi-Head Latent Attention,多头潜在注意力)
  • 深入解析适配器模式:软件架构中的接口协调大师
  • printf和 vprintf的区别
  • MongoDB学习
  • CASS11快捷键设置
  • 国内三大知名开源批发订货系统对比
  • 【React】React 基础(2)
  • 深度解读DeepSeek:从原理到模型
  • Cursor不能白嫖还不安全:Cline + DeepSeek V3,最强国产双开源解决方案
  • C语言内存函数
  • 【MATLAB例程】RSSI/PLE定位与卡尔曼滤波NLOS抑制算法,附完整代码
  • 智能自动化新纪元:AI与UiPath RPA的协同应用场景与技术实践
  • vscode软件中引入vant组件
  • leetcode hot100-34 合并K个升序链表
  • 什么是Firehose?它的作用是什么?
  • 蓝桥杯笔记——递归递推