俩数组区间交集


image.png

双指针,注意单个数组的前面可能重叠,后面也可能。

遇到 [1,3],[2,4]这种重叠的记得left指针要抛弃[1,3]这种end更小的然后left++,因为下一个重叠肯定跟[1,3]没关系了。

如果没有重叠那就把前面那个指针++。

class Solution {
public:
    vector<vector<int>> intervalIntersection(vector<vector<int>>& firstList, vector<vector<int>>& secondList) {
        if(firstList.size()==0||secondList.size()==0){
            return {};
        }
        int l1=0;
        int l2=0;
        vector<vector<int>>res;
        // 看谁的start更小,然后判断是否有交集,有交集那么start更小但是end也更小的抛弃然后l1++,否则抛弃l2
        while(l1<firstList.size()&&l2<secondList.size()){
            int p1=max(firstList[l1][0],secondList[l2][0]);
            int p2=min(firstList[l1][1],secondList[l2][1]);
            if(p1<=p2){
                res.push_back(vector<int>{p1,p2});
                if(firstList[l1][1]<secondList[l2][1]){
                    l1++;
                }else{
                    l2++;
                }
            }else{
                if(firstList[l1][1]<secondList[l2][0]){
                    l1++;
                }
                else{
                    l2++;
                }
            }
        }
        return res;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.链表 1.实现一个单向链表 2.找出链表相交节点,假设均没有环 3.判断链表是否有环思路:使用快慢两个指针,当...
    X1028阅读 3,942评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,671评论 18 399
  • 读完本文,你可以去力扣拿下如下题目: 986.区间列表的交集[https://leetcode-cn.com/pr...
    labuladong阅读 4,771评论 0 5
  • 知识点总结 二分查找法(二分查找法是弱点)**以及相关的操作:递归实现和非递归实现,floor 和 ceiling...
    李威威阅读 4,485评论 0 0
  • 数据库基础知识 为什么要使用数据库 数据保存在内存优点: 存取速度快缺点: 数据不能永久保存 数据保存在文件优点:...
    淺時咣阅读 2,958评论 0 1

友情链接更多精彩内容