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

给定两个由一些 闭区间 组成的列表,firstList 和 secondList ,其中 firstList[i] = [starti, endi] 而 secondList[j] = [startj, endj] 。每个区间列表都是成对 不相交 的,并且 已经排序 。

返回这 两个区间列表的交集 。

形式上,闭区间 [a, b](其中 a <= b)表示实数 x 的集合,而 a <= x <= b 。

两个闭区间的 交集 是一组实数,要么为空集,要么为闭区间。例如,[1, 3] 和 [2, 4] 的交集为 [2, 3] 。

示例 1:


输入:firstList = [[0,2],[5,10],[13,23],[24,25]], secondList = [[1,5],[8,12],[15,24],[25,26]]
输出:[[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]]
示例 2:

输入:firstList = [[1,3],[5,9]], secondList = []
输出:[]
示例 3:

输入:firstList = [], secondList = [[4,8],[10,12]]
输出:[]
示例 4:

输入:firstList = [[1,7]], secondList = [[3,10]]
输出:[[3,7]]
 

提示:

0 <= firstList.length, secondList.length <= 1000
firstList.length + secondList.length >= 1
0 <= starti < endi <= 109
endi < starti+1
0 <= startj < endj <= 109
endj < startj+1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/interval-list-intersections
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题报告:

O(n^2)的方法就不说了。

来说个O(n)的。

for遍历第一个vector,然后用pos指针去遍历第二个vector。

因为随着for遍历,pos也会一直增大,是单调的,所以复杂度是On的。

class Solution {
public:vector<vector<int>> intervalIntersection(vector<vector<int>>& firstList, vector<vector<int>>& secondList) {vector<vector<int>> ans;int pos = 0;for(int i = 0; i<firstList.size(); i++) {int l = firstList[i][0], r = firstList[i][1];//先把不相交的给过滤掉while(pos < secondList.size() && secondList[pos][1]<l) pos++;//完全相交的while(pos < secondList.size() && secondList[pos][1]<=r) {ans.push_back(vector<int>{max(l, secondList[pos][0]), secondList[pos][1]});pos++;}if(pos < secondList.size() && secondList[pos][0] <= r) {//这里不要落下等号ans.push_back(vector<int>{max(l, secondList[pos][0]), r});}}return ans;}
};

题解是个更简单的方法:用类似O(n^2)的暴力判断,只不过这题比较巧,可以双指针来优化掉一些区间。

有空写写看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】SQL Server服务器名称与默认实例名不一致的修复方法

服务器级的urn筛选器无效&#xff1a;筛选器必须为空&#xff0c;或服务器属性必须等于实际的服务器名称 这个问题是出在本地连接还是远程连接上&#xff0c;这个问题可能是由于修改过服务器名称导致的。你可以尝试在本地的服务器和SQL Server上运行以下指令&#xff0c;看看服…

【LeetCode 295】. 数据流的中位数

中位数是有序列表中间的数。如果列表长度是偶数&#xff0c;中位数则是中间两个数的平均值。 例如&#xff0c; [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 3) / 2 2.5 设计一个支持以下两种操作的数据结构&#xff1a; void addNum(int num) - 从数据流中添加一个整数到…

【转】如何从SharePoint Content DB中查询List数据***

SharePoint用来维护基础数据非常方便&#xff0c;只需要建立自定义列表&#xff0c;然后使用InfoPath自定义一下维护界面&#xff0c;就可以实现在线的增删改查&#xff0c;开发效率很高。如果维护的数据需要进行审批&#xff0c;还可以加入工作流功能。使用SharePoint Designe…

【搬石头排序】

据说是2020浪潮笔试 时间限制&#xff1a;C / C 语言 1000 MS&#xff1b;其他语言 3000 MS 内存限制&#xff1a;C / C 语言 131072 KB&#xff1b;其他语言 655360 KB 题目描述&#xff1a; 沙滩按照线型摆放着n个大小不一的球形石头&#xff0c;已知第i个石头的半径为ri&a…

【转】SharePoint Content Database简介

SharePoint作为微软主打的企业Portal平台&#xff0c;功能强大&#xff0c;使用简单&#xff0c;非常的方便。对于很多关系数据&#xff0c;我们可以使用自定义列表来维护&#xff0c;如果是非关系数据&#xff0c;可以使用文档库来维护。另外还可以在上面进行版本维护&#xf…

【LeetCode 2】两数相加(链表)

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 …

软件测试几个概念 --dev sit uat

DEV环境&#xff1a;DEV顾名思义就是develop&#xff0c;即代码开发的环境。 SIT环境&#xff1a;System Integration Test系统集成测试&#xff0c;开发人员自己测试流程是否走通。 UAT环境&#xff1a;User Acceptance Test用户验收测试&#xff0c;由专门的测试人员验证&…

【LeetCode 629】K个逆序对数组

给出两个整数 n 和 k&#xff0c;找出所有包含从 1 到 n 的数字&#xff0c;且恰好拥有 k 个逆序对的不同的数组的个数。 逆序对的定义如下&#xff1a;对于数组的第i个和第 j个元素&#xff0c;如果满i < j且 a[i] > a[j]&#xff0c;则其为一个逆序对&#xff1b;否则…

VSTS TFS 强制删除签出锁定项 解除 锁定

项目组一哥们走的时候以独占方式迁出了文件&#xff0c;现在其他人都无法修改&#xff0c;管理员似乎也无法将文件解除。经过摸索&#xff0c;找到了一种暴力的方法——直接改数据库。虽然暴力&#xff0c;却能实实在在地解决这个问题。 步骤&#xff1a; 1、连接到TFS数据库…

【NC30】缺失的第一个正整数

描述 给定一个无重复元素的整数数组nums&#xff0c;请你找出其中没有出现的最小的正整数 进阶&#xff1a; 空间复杂度 O(1)&#xff0c;时间复杂度 O(n) 数据范围: -2^31<nums[i]<2^31-1 0<len(nums)<5*10^5 示例1 输入&#xff1a; [1,0,2] 复制返回值…

【NC140 排序】手写快速排序

描述 给定一个长度为 n 的数组&#xff0c;请你编写一个函数&#xff0c;返回该数组按升序排序后的结果。 数据范围&#xff1a; 0 \le n \le 1\times10^30≤n≤1103&#xff0c;数组中每个元素都满足 0 \le val \le 10^90≤val≤109 要求&#xff1a;时间复杂度 O(n^2)O(n2)…

【LCS系列】最长公共子序列和最长公共子串

最长公共子序列&#xff1a; 如果要回溯出整个字符串的答案的话&#xff0c;可以直接看dp[i][len2-1]列&#xff0c;或者dp[len1-1][i]这一行&#xff0c;变化的时候&#xff0c;则代表要选这个字符&#xff0c;然后连起来就可以了。&#xff08;即构造字符串的过程是On的&…

sharepoint文档库文档版本信息操作

SPListItem spDoc oWeb.Lists["共享文档"].GetItemById(DocumentID); SPFileVersionCollection versionColl spDoc.File.Versions; foreach (SPFileVersion version in versionColl) {     //将UTC时间格式转换为本地时间 DateTime versionTime Conv…

【NC14 按之字形顺序打印二叉树】

描述 给定一个二叉树&#xff0c;返回该二叉树的之字形层序遍历&#xff0c;&#xff08;第一层从左向右&#xff0c;下一层从右向左&#xff0c;一直这样交替&#xff09; 数据范围&#xff1a;0 \le n \le 15000≤n≤1500,树上每个节点的val满足 |val| < 100∣val∣<1…

【NC51 合并k个已排序的链表】K路归并

描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 数据范围&#xff1a;节点总数 0 \le n \le 50000≤n≤5000&#xff0c;每个节点的val满足 |val| < 1000∣val∣<1000 要求&#xff1a;时间复杂度 O(nlogn)O(nlogn) 示例1 输入&#xff1a; [{1…

SharePoint 2010文档库批量下载文档的实现

在SharePoint 2010文档库中&#xff0c;结合单选框&#xff0c;在Ribbon中提供了批量处理文档的功能&#xff0c;比如&#xff0c;批量删除、批量签出、批量签入等&#xff0c;但是&#xff0c;很遗憾&#xff0c;没有提供批量下载&#xff0c;如图: 若选中多个文档后&#xff…

【NC54 三数之和】(待整理)

描述 给出一个有n个元素的数组S&#xff0c;S中是否有元素a,b,c满足abc0&#xff1f;找出数组S中所有满足条件的三元组。 数据范围&#xff1a;0 \le n \le 10000≤n≤1000&#xff0c;数组中各个元素值满足 |val | \le 100∣val∣≤100 空间复杂度&#xff1a;O(n^2)O(n2)&a…

【转】C#执行rar,zip文件压缩的几种方法及我遇到的坑总结

工作项目中需要用到zip压缩解压缩文件&#xff0c;一开始看上了Ionic.Zip.dll这个类库&#xff0c;操作方便&#xff0c;写法简单 对应有个ziphelper类 using Ionic.Zip;public static class ZipHelper{public static void UnZip(string zipPath, string outPath){try{using (…

【LeetCode - 42. 接雨水】

42. 接雨水 难度困难3164 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 […

【转】C#打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件)

C#打包zip文件可以调用现成的第三方dll&#xff0c;事半功倍&#xff0c;而且该dll完全免费&#xff0c;下载地址&#xff1a;SharpZipLib 下载完解压缩后&#xff0c;把 ICSharpCode.SharpZipLib.dll 拷贝到当前项目的目录下&#xff08;如果偷懒的话&#xff0c;可以直接拷贝…