【力扣每日一题】2023.8.27 合并区间

这篇具有很好参考价值的文章主要介绍了【力扣每日一题】2023.8.27 合并区间。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

题目:

示例:

分析:

代码:


题目:

【力扣每日一题】2023.8.27 合并区间,力扣每日一题,leetcode,算法,c++,数据结构

示例:

【力扣每日一题】2023.8.27 合并区间,力扣每日一题,leetcode,算法,c++,数据结构

分析:

那么合并区间是在什么情况下才能合并呢?

我总结为两种情况

第一种情况就是这样,第二个区间的左区间大于第一个区间的左区间但是小于第一个区间的右区间,并且第一个区间的右区间小于第二个区间的右区间,这种情况下合并的结果就是第一个区间的左区间和第二个区间的右区间组成一个新的更大的区间。

【力扣每日一题】2023.8.27 合并区间,力扣每日一题,leetcode,算法,c++,数据结构

 第二种情况就是第二个区间的左区间大于第一个区间的左区间但是小于第一个区间的右区间,并且第一个区间的右区间大于第二个区间的右区间,这种情况下合并的结果就是第一个区间把第二个区间吞并。

【力扣每日一题】2023.8.27 合并区间,力扣每日一题,leetcode,算法,c++,数据结构

 以上两种情况都是基于第一个区间的左区间小于第二个区间的左区间的,所以我们可以先对给的区间按照左区间进行排序。

昨天是汇总区间,今天是合并区间,我们和昨天一样的是需要两个变量来记录左右区间,并且初始化为第一个区间,从下标为1的位置往后遍历剩余区间。

如果当前遍历到的区间的左区间小于等于临时变量的右区间,那么可以合并区间,我们把临时变量的右区间更新为较大值。

如果当前遍历到的区间的左区间大于临时变量的右区间,那么我们无法再合并区间了,我们往答案中添加临时变量组成的区间,然后更新临时变量为当前区间。

【力扣每日一题】2023.8.27 合并区间,力扣每日一题,leetcode,算法,c++,数据结构文章来源地址https://www.toymoban.com/news/detail-675449.html

代码:

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        sort(intervals.begin(),intervals.end(),[](vector<int>a,vector<int>b){return a[0]<b[0];});
        vector<vector<int>>res;
        int begin=intervals[0][0],end=intervals[0][1];  //临时变量记录左右区间,初始化为数组第一个元素
        for(int i=1;i<intervals.size();i++){
            if(intervals[i][0]>end){    //如果新区间的左区间大于临时的右区间,则发生区间不重合
                res.push_back({begin,end}); //添加临时变量的区间
                begin=intervals[i][0],end=intervals[i][1];  //更新两个临时变量
            }else{
                end=max(end,intervals[i][1]);   //如果区间重合,那么更新临时变量的右区间为较大值
            }
        }
        res.push_back({begin,end});
        return res;
    }
};

到了这里,关于【力扣每日一题】2023.8.27 合并区间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023-07-26力扣每日一题-区间翻转线段树

    链接: 2569. 更新数组后处理求和查询 题意: 给两个等长数组nums1和nums2,三个操作: 操作1:将nums1的 [l,r] 翻转(0变1,1变0) 操作2:将 nums2[any] 变成 nums2[any]+nums1[any]*p ,p由操作给出,any表示数组里的每一位 操作3:查询nums2的和 解: 由于每次更新nums2的时候,不需要考虑

    2024年02月15日
    浏览(44)
  • 2023-08-28 LeetCode每日一题(插入区间)

    点击跳转到题目位置 给你一个 无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示: 0 = intervals.length = 10 4 interval

    2024年02月11日
    浏览(48)
  • 【力扣每日一题】2023.8.13 合并两个有序数组

    目录 题目: 示例: 分析: 代码: 题目给我们两个升序数组,让我们合并它们,要求合并之后仍然是升序,并且这个合并操作是在数组1原地修改的。数组1的有效数据长度为 m ,而数组1的长度为 m + n,n 是数组2的有效数据长度以及数组的长度。 比较直观容易想到的做法就是

    2024年02月12日
    浏览(41)
  • 【力扣每日一题】2023.8.12 合并K个升序链表

    目录 题目: 示例: 分析: 代码: 题目给我们一个链表数组,数组里的链表都是升序的,让我们合并这些链表,要求合并之后还是升序的。 最简单最直观的做法就是遍历整个数组,把每个链表的节点都取出来塞到一个容器里,然后对容器进行升序排序,接着按顺序重新串连

    2024年02月13日
    浏览(41)
  • 2023-08-13 LeetCode每日一题(合并两个有序数组)

    点击跳转到题目位置 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 **注意:**最终,合并后数组不应由函数返回,而是存储在数组 num

    2024年02月13日
    浏览(60)
  • 2023-08-12 LeetCode每日一题(合并 K 个升序链表)

    点击跳转到题目位置 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 示例 2: 示例 3:

    2024年02月13日
    浏览(41)
  • 【每日一题】56. 合并区间

    以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 示例 2: 提示: 1 = intervals.length = 104 intervals[i].length == 2 0 = starti = endi = 104 首先将所

    2024年02月10日
    浏览(36)
  • 【leetcode 力扣刷题】汇总区间//合并区间//插入区间

    题目链接:228.汇总区间 题目内容: 看题目真是没懂这个题到底是要干啥……实际上题目要求的 恰好覆盖数组中所有数字 的 最小有序 区间范围列表,这个最小是指一个区间范围小。比如能够覆盖{2,3,4,6}的区间可以是[2,6],但是5在区间内,却不在数组内,因此这个区间不是最

    2024年02月10日
    浏览(38)
  • 每日一题:leetcode 57 插入区间

    给你一个  无重叠的  , 按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示: 0 = intervals.length = 104 intervals[i].length == 2 0 = int

    2024年02月11日
    浏览(46)
  • 力扣每日一题88:合并两个有序数组

    给你两个按  非递减顺序  排列的整数数组  nums1   和  nums2 ,另有两个整数  m  和  n  ,分别表示  nums1  和  nums2  中的元素数目。 请你  合并   nums2   到  nums1  中,使合并后的数组同样按  非递减顺序  排列。 注意: 最终,合并后数组不应由函数返回,而是存储在

    2024年02月07日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包