LeetCode-Python-1229. 安排会议日程(区间+数组)
你是一名行政助理,手里有两位客户的空闲时间表:slots1
和 slots2
,以及会议的预计持续时间 duration
,请你为他们安排合适的会议时间。
「会议时间」是两位客户都有空参加,并且持续时间能够满足预计时间 duration
的 最早的时间间隔。
如果没有满足要求的会议时间,就请返回一个 空数组。
「空闲时间」的格式是 [start, end]
,由开始时间 start
和结束时间 end
组成,表示从 start
开始,到 end
结束。
题目保证数据有效:同一个人的空闲时间不会出现交叠的情况,也就是说,对于同一个人的两个空闲时间 [start1, end1]
和 [start2, end2]
,要么 start1 > end2
,要么 start2 > end1
。
示例 1:
输入:slots1 = [[10,50],[60,120],[140,210]], slots2 = [[0,15],[60,70]], duration = 8 输出:[60,68]
示例 2:
输入:slots1 = [[10,50],[60,120],[140,210]], slots2 = [[0,15],[60,70]], duration = 12 输出:[]
提示:
1 <= slots1.length, slots2.length <= 10^4
slots1[i].length, slots2[i].length == 2
slots1[i][0] < slots1[i][1]
slots2[i][0] < slots2[i][1]
0 <= slots1[i][j], slots2[i][j] <= 10^9
1 <= duration <= 10^6
思路:
只需找到区间的交集,然后判断存不存在长度大于duration的区间即可。
坑点在于:输入没有按开始时间排序,需要手动排序。
时间复杂度:O(MlogM + NlogN + M + N + min(M, N))
空间复杂度:O(min(M + N))
class Solution(object):def minAvailableDuration(self, slots1, slots2, duration):""":type slots1: List[List[int]]:type slots2: List[List[int]]:type duration: int:rtype: List[int]"""slots1 = sorted(slots1, key = lambda x:x[0])slots2 = sorted(slots2, key = lambda x:x[0])slots = []i, j = 0, 0while i < len(slots1) and j < len(slots2):if slots1[i][1] < slots2[j][0]:i += 1continueelif slots1[i][0] > slots2[j][1]:j += 1continuestart = max(slots1[i][0], slots2[j][0])end = min(slots1[i][1], slots2[j][1])slots.append([start, end])i += 1for start, end in slots:if end - start >= duration:return [start, start + duration]return []
LeetCode-Python-1229. 安排会议日程(区间+数组)相关推荐
- Leetcode 1229. 安排会议日程
1229. 安排会议日程 解题思路 又是看着测试用例做的答案,效率不太高. 题目中给的基本测试用例都是排序好的,在后面的测试用例中,又有些没有排序好的.看到了这样子的测试用例,又得退回去做了一个排序. ...
- LeetCode 1229. 安排会议日程(双指针)
文章目录 1. 题目 2. 解题 1. 题目 你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「 ...
- Leetcode 1229:安排会议日程(超详细的解法!!!)
你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且持续时间能 ...
- 双指针—安排会议日程(leetcode 1229)
题目描述 你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且 ...
- 【LeetCode - 1229】安排会议日程
文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解题思路 题目保证了同一个人的空闲时间不会出现交叠的情况,于是先把两个人的空闲时间表按照开始时间从小到大排序. 排序后的时 ...
- 5089. 安排会议日程
你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且持续时间能 ...
- 第 11 场双周赛-5089. 安排会议日程(双指针)
你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且持续时间能 ...
- leetcode1229. 安排会议日程
题目 你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且持续 ...
- LeetCode(Python实现)—寻找两个有序数组的中位数
4.寻找两个有序数组的中位数 题目大意 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). ...
最新文章
- YOLOV5 v6.1更新 | TensorRT+TPU+OpenVINO+TFJS+TFLite等平台一键导出和部署
- win7如何启动计算机,win7开机启动项怎么设置 电脑开机启动项在哪里设置
- 《水泥公司信息管理系统》Access学习心得
- LINUX IP命令详解
- 专家:我国青少年网络安全立法还需完善
- Arthas简单入门与初步实践
- androidsdcard挂载目录_获取android手机的自带存储路径和sdcard存储路径
- spring boot的学习(1)杂
- git 列出两个 commit 之间变更的文件列表
- 你不知道的Bitmap
- Centos下安装Scrapy
- php导出excel不完整,急:php导出excel时,因数据比较多,经常导出不完整就结束了【php系统数据导出excel表格】...
- python代码收费_莱斯大学学费 - 高速公路收费的python设计代码
- Android 自定义View UC下拉刷新效果(一)
- 利用akshare读取50EFF期权2
- [ - OpenGLES3.0 - ] 第一集 主线 - 打开新世界的大门
- c++教程(1)学习指南
- 血族第四季/全集The Strain迅雷下载
- VBA提取PPT中的文字
- Android MagicIndicator系列之一 —— 使用MagicIndicator打造千变万化的ViewPager指示器