你是一名行政助理,手里有两位客户的空闲时间表: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. 安排会议日程(区间+数组)相关推荐

  1. Leetcode 1229. 安排会议日程

    1229. 安排会议日程 解题思路 又是看着测试用例做的答案,效率不太高. 题目中给的基本测试用例都是排序好的,在后面的测试用例中,又有些没有排序好的.看到了这样子的测试用例,又得退回去做了一个排序. ...

  2. LeetCode 1229. 安排会议日程(双指针)

    文章目录 1. 题目 2. 解题 1. 题目 你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「 ...

  3. Leetcode 1229:安排会议日程(超详细的解法!!!)

    你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且持续时间能 ...

  4. 双指针—安排会议日程(leetcode 1229)

    题目描述 你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且 ...

  5. 【LeetCode - 1229】安排会议日程

    文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解题思路   题目保证了同一个人的空闲时间不会出现交叠的情况,于是先把两个人的空闲时间表按照开始时间从小到大排序.   排序后的时 ...

  6. 5089. 安排会议日程

    你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且持续时间能 ...

  7. 第 11 场双周赛-5089. 安排会议日程(双指针)

    你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且持续时间能 ...

  8. leetcode1229. 安排会议日程

    题目 你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且持续 ...

  9. LeetCode(Python实现)—寻找两个有序数组的中位数

    4.寻找两个有序数组的中位数 题目大意 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). ...

最新文章

  1. YOLOV5 v6.1更新 | TensorRT+TPU+OpenVINO+TFJS+TFLite等平台一键导出和部署
  2. win7如何启动计算机,win7开机启动项怎么设置 电脑开机启动项在哪里设置
  3. 《水泥公司信息管理系统》Access学习心得
  4. LINUX IP命令详解
  5. 专家:我国青少年网络安全立法还需完善
  6. Arthas简单入门与初步实践
  7. androidsdcard挂载目录_获取android手机的自带存储路径和sdcard存储路径
  8. spring boot的学习(1)杂
  9. git 列出两个 commit 之间变更的文件列表
  10. 你不知道的Bitmap
  11. Centos下安装Scrapy
  12. php导出excel不完整,急:php导出excel时,因数据比较多,经常导出不完整就结束了【php系统数据导出excel表格】...
  13. python代码收费_莱斯大学学费 - 高速公路收费的python设计代码
  14. Android 自定义View UC下拉刷新效果(一)
  15. 利用akshare读取50EFF期权2
  16. [ - OpenGLES3.0 - ] 第一集 主线 - 打开新世界的大门
  17. c++教程(1)学习指南
  18. 血族第四季/全集The Strain迅雷下载
  19. VBA提取PPT中的文字
  20. Android MagicIndicator系列之一 —— 使用MagicIndicator打造千变万化的ViewPager指示器

热门文章

  1. 如何设计成功的游戏关卡
  2. python图层合并_GIS实验之文件夹中的批量图层合并Python实现
  3. ZZNUOJ_用C语言编写程序实现1375:画箭(附完整源码)
  4. css 自定义字体 Internet Explorer,Firefox,Opera,Safari
  5. 计算机基本配置检测单,怎么查看与测试PC电脑的硬件配置
  6. 电脑版微信同时登录多个微信账号
  7. 单机游戏的各种游戏类型的经典
  8. 工地智能安全帽方案/设计案列/APP
  9. H5 画布(抄自往w3c)
  10. java 如何实现在线日志