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

2023-08-27 LeetCode每日一题(合并区间)

2023-08-27每日一题

一、题目编号

56. 合并区间

二、题目链接

点击跳转到题目位置

三、题目描述

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

示例 1:
在这里插入图片描述
示例 2:
在这里插入图片描述
提示:

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

四、解题代码

class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {int n = intervals.size();sort(intervals.begin(), intervals.end(), [&](vector<int> &a, vector<int> &b){return a[0] < b[0];});vector<vector<int>> res;int left = intervals[0][0]; int right = intervals[0][1];for(int i = 1; i < n; ++i){if(intervals[i][0] <= right){right = max(right, intervals[i][1]);} else{res.push_back({left, right});left = intervals[i][0];right = intervals[i][1];}}res.push_back({left, right});return res;}
};

五、解题思路

(1) 首先将数组按照区间左端点从小到大进行自定义排序。

(2) 接着左端设置为intervals[0][0],右端设置为 intervals[0][1]。

(3) 接着遍历数组,如果遍历到的区间左端大于记录的区间的右端,则将记录的区间放入结果数组中,新的区间更新为当前遍历到的区间,如果遍历到的区间的左端小于等于记录的区间的右端,则此时区间的右端则更新为两者区间右端的大值。

(4) 遍历完毕后不要忘记将当前记录的区间放入结果数组中。

(5) 最后返回结果数组即可。

http://www.lryc.cn/news/142712.html

相关文章:

  • C#,数值计算——调适数值积分法(adaptive quadrature)的计算方法与源程序
  • 微信小程序发布迭代版本后如何提示用户强制更新新版本
  • 星际争霸之小霸王之小蜜蜂(七)--消失的子弹
  • Hadoop入门机安装hadoop
  • cookie技术介绍
  • 网络摄像头:SparkoCam Crack
  • 【缓存设计】记一种不错的缓存设计思路
  • 微信小程序大学校园二手教材与书籍拍卖系统设计与实现
  • 涛然自得周刊(第06期):韩版苏东坡的突围
  • DOCKER 部署 webman项目
  • LLMs:LangChain-Chatchat(一款可实现本地知识库问答应用)的简介、安装、使用方法之详细攻略
  • Qt 解析XML文件 QXmlStreamReader
  • 图像线段检测几种方法
  • 【Vue2.0源码学习】生命周期篇-初始化阶段(initEvents)
  • SQL高级知识点
  • 【安全】原型链污染 - Code-Breaking 2018 Thejs
  • 【架构】探索计算机处理器的世界:ARM和x86架构解析及指令集
  • SpringBoot权限认证
  • OpenGL-入门-BMP像素图glReadPixels
  • 同源策略以及SpringBoot的常见跨域配置
  • 基于jeecg-boot的flowable流程跳转功能实现
  • react图片预加载
  • 数据库管理
  • 【2023年11月第四版教材】《第8章-整合管理》(第3部分)
  • 初阶数据结构(三)链表
  • Python小知识 - 八大排序算法
  • 安卓动态申请权限
  • 关于亚马逊云科技云技能孵化营学习心得
  • 计算机安全学习笔记(III):强制访问控制 - MAC
  • java判断ip是否为指定网段