一共分成三种情况来考虑
第一种情况

  • first 和 second 所在的区间有交集,但是不会超过 second 所在的区间,最终截取的区间段是两者的交集。

    • 取完交集之后,是 first 向后移动一个,
    • 如果second 和 first 原来的尾部一致,那么都同时向后移动

      第二种情况
      second 直接囊括 first ,将 first 加入 答案后,只需 first 向后移动即可

第三种情况
first 和 second 没有交集,不能加入答案,只能向后移动

最终的代码还是写复杂了,直接分成有交集和没有交集的就好

最终的版本

vector<vector<int>> intervalIntersection(vector<vector<int>>& firstList, vector<vector<int>>& secondList) {vector<vector<int>> ret;if(firstList.empty()|| secondList.empty()){return ret;}int size1 = firstList.size();int size2 = secondList.size();int i = 0,j = 0;while(i < size1 && j < size2){//不满足的条件是 firstList[i][0] > secondList[j][0];//firstList[i][1] < firstList[j][0]//firstList[i][1] > secondList[j][1]if(firstList[i][0] <= secondList[j][0] && firstList[i][1] >= secondList[j][0] && firstList[i][1] <= secondList[j][1]){ret.push_back({secondList[j][0],firstList[i][1]});if(firstList[i][1] == secondList[j][1]){i++;j++;}else {i++;}}//不满足的条件是 secondList[j][0] > firstList[i][0]//secondList[j][1] < firstList[i][0]//secondList[j][1] > firstList[i][1]else if(secondList[j][0] <= firstList[i][0] && secondList[j][1] >= firstList[i][0]&& secondList[j][1] <= firstList[i][1]){ret.push_back({firstList[i][0],secondList[j][1]});if(firstList[i][1] == secondList[j][1]){i++;j++;}else {j++;}}else if(secondList[j][0] < firstList[i][0] && firstList[i][1] < secondList[j][1]){ret.push_back(firstList[i]);i++;}else if(firstList[i][0] < secondList[j][0] && secondList[j][1] < firstList[i][1]){ret.push_back(secondList[j]);j++;}else {// i++;// j++;if(firstList[i][0] < secondList[j][0] && firstList[i][1] < secondList[j][1]){i++;}else if(secondList[j][0] < firstList[i][0] && secondList[j][1] < firstList[i][1]){j++;}// else if(firstList[i][1] > secondList[j][1]){//     j++;// }else if(firstList[i][1] < secondList[j][1]){//     i++;// }}}return ret;}

2022-2-16 Leetcode986.区间列表的交集相关推荐

  1. 【LeetCode 986】 区间列表的交集(区间交集)

    给定两个由一些 闭区间 组成的列表,firstList 和 secondList ,其中 firstList[i] = [starti, endi] 而 secondList[j] = [startj ...

  2. LeetCode 986. 区间列表的交集

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定两个由一些闭区间组成的列表,每个区间列表都是成对不相交的,并且已经排序. 返回这两个区间列表的交集. (形式上,闭区间 [a, b](其中 a ...

  3. Leetcode刷题986. 区间列表的交集

    给定两个由一些 闭区间 组成的列表,每个区间列表都是成对不相交的,并且已经排序. 返回这两个区间列表的交集. (形式上,闭区间 [a, b](其中 a <= b)表示实数 x 的集合,而 a & ...

  4. leetcode 986. Interval List Intersections | 986. 区间列表的交集(双指针)

    题目 https://leetcode.com/problems/interval-list-intersections/ 题解 本题用双指针.(想了下,也可以用线段树,和天际线那道题类似) clas ...

  5. on java 8 学习笔记 2022.2.16

    2022.2.16 问题 其实我感觉引用计数的方法不只书中提到的这种问题吧,难道不会有对象被误删的情况吗? 答:不会,因为这种方法就是参考了只要有引用,它就是有效对象的路子,而只要引用大于0,那它就是 ...

  6. 求两个集合的差集代码_求求你了,不要再写循环求两个列表的交集,并集和差集了 | pythonic 小技巧...

    在 Python 中,求两个列表的交集,并集和差集是经常会遇到的需求,而且也比较简单. 最容易想到的就是写循环,对两个列表分别进行循环,然后判断元素是否在另一个列表中,求得最终结果. 但这种方法比较 ...

  7. 数据结构:求两个有序列表的交集,并集

    1.求两个有序列表的交集 LNode* Intersection(LNode* La,LNode* Lb) {if (La==NULL||Lb==NULL){return NULL;}LNode *p ...

  8. 【SRE笔记 2022.8.16 Linux命令基础01】

    [SRE笔记 2022.8.16] Xsell使用技巧补充 centos 7 root密码重置 方法一 方法二 numtui配置网络 Bash bash命令行图解 命令行提示符 控制变量 PS环境变量 ...

  9. 【不忘初心】 Windows11_22H2_22621.105_X64_可更新[纯净精简版][2.28G](2022.6.16)

    此版可正常更新补丁,关闭按流量计费,WIN11全新的UI界面出炉!可以说这一次Windows 11全新升级,无论是从Logo上还是UI界面设计,都有很大的变化,母版来自UUP WIN11_22621. ...

最新文章

  1. Linux命令:文本处理工具awk详解
  2. Jenkins持续集成环境之插件管理和角色管理
  3. 如何深拷贝一个对象数组?
  4. SSH免密直接登录方法
  5. STM32产品名称命名规则
  6. 太惨了!卖一个月不如小米卖一天,手机一哥仍不甘心
  7. 华为年度旗舰Mate 30 Pro真机现身,既惊喜又失望...
  8. tp886n路由器是第几代?
  9. 为什么说《让子弹飞》是古今中外的神片
  10. C# BackgroundWorker组件学习
  11. tcpserver检测断开qt_QTcpServer或QTcpClient(在服务器端)知道,已连接的客户端现已断开连接...
  12. oracle设置保存时间为12或是24小时格式
  13. c语言int temp什么意思,C中的temp是什么意思?
  14. PS进阶抠图详解(可以处理头发)
  15. 王者荣耀高清壁纸脚本Python文件
  16. 实现直播视频app源码的底部导航栏
  17. java实现svm svm的java实现
  18. HTML中spry菜单栏,DreamweaverCS3中用“spry菜单栏”制作纵向导航菜单.docx
  19. Python对列表去重的多种方法(四种方法)
  20. C语言————二进制转十进制

热门文章

  1. 身份证复印件扫描件必须签字或加水印防止被盗用
  2. ZZULIOJ1029
  3. java observer_Java观察者模式(Observer)
  4. 手写链表底层实现(java实现)
  5. AHB-Lite总线协议
  6. iSpring Suite教程:使用iSpring创建视频讲座只需简单6步(上)
  7. 生成器、迭代器、可迭代对象三者的联系和区别
  8. ijkplayer 使用
  9. FreeSwitch的安装部署
  10. 随机产生单词然后判别其是否是真正的(可拼写的)单词:)