题目描述:

自己的提交:

class Solution:
def minAvailableDuration(self, slots1: List[List[int]], slots2: List[List[int]], duration: int) -> List[int]:
res = []
i,j = 0,0
for start,end in slots1:
if end - start < duration:
i += 1
if i == len(slots1):
return []
for start,end in slots2:
if end - start < duration:
j += 1
if j == len(slots2):
return []
slots1.sort(key = lambda s:s[0])
slots2.sort(key = lambda s:s[0])
i,j = 0,0
while i<len(slots1) and j<len(slots2):
while slots1[i][0] >= slots2[j][1]:
j += 1
# while slots1[j][0] >= slots2[i][1]:
# i += 1
time = min(slots1[i][1],slots2[j][1]) - max(slots1[i][0],slots2[j][0])
if time < duration:
if slots1[i][1] < slots2[j][1]:
i += 1
else:j += 1
else:
return [max(slots1[i][0],slots2[j][0]),max(slots1[i][0],slots2[j][0])+duration]
return []

优化:

class Solution:
def minAvailableDuration(self, slots1: List[List[int]], slots2: List[List[int]], duration: int) -> List[int]:
slots1.sort()
slots2.sort()
m, n, i, j = len(slots1), len(slots2), 0, 0
while i < m and j < n:
(s1, e1), (s2, e2) = slots1[i], slots2[j]
if e1 <= s2:
i += 1
elif e2 <= s2:
j += 1
else:
s, e = max(s1, s2), min(e1, e2)
if e - s >= duration:
return [s, s + duration]
if e1 <= e2:
i += 1
else:
j += 1
return []

另:

class Solution(object):
def minAvailableDuration(self, slots1, slots2, duration):
events = []
OPEN, CLOSE = 0, 1
for a, b in slots1:
events.append((a, OPEN))
events.append((b, CLOSE))
for a, b in slots2:
events.append((a, OPEN))
events.append((b, CLOSE)) events.sort()
prev = events[0][0]
active = 0
for x, cmd in events:
if active == 2 and x - prev >= duration:
return [prev, prev + duration] if cmd == OPEN:
active += 1
else:
active -= 1

leetcode-第11场双周赛-5089-安排会议日程的更多相关文章

  1. LeetCode第8场双周赛(Java)

    这次我只做对一题. 原因是题目返回值类型有误,写的是 String[] ,实际上应该返回 List<String> . 好吧,只能自认倒霉.就当涨涨经验. 5068. 前后拼接 解题思路 ...

  2. LeetCode 第 15 场双周赛

    1287.有序数组中出现次数超过25%的元素 1288.删除被覆盖区间 1286.字母组合迭代器 1289.下降路径最小和 II 下降和不能只保留原数组中最小的两个,hacked. 1287.有序数组 ...

  3. LeetCode 第 14 场双周赛

    基础的 api 还是不够熟悉啊 5112. 十六进制魔术数字 class Solution { public: char *lltoa(long long num, char *str, int ra ...

  4. LeetCode第29场双周赛题解

    第一题 用一个新数组newSalary保存去掉最低和最高工资的工资列表,然后遍历newSalary,计算总和,除以元素个数,就得到了平均值. class Solution { public: doub ...

  5. Java实现 LeetCode第30场双周赛 (题号5177,5445,5446,5447)

    这套题不算难,但是因为是昨天晚上太晚了,好久没有大晚上写过代码了,有点不适应,今天上午一看还是挺简单的 5177. 转变日期格式   给你一个字符串 date ,它的格式为 Day Month Yea ...

  6. leetcode-第11场双周赛-5088-等差数列中缺失的数字

    题目描述: 自己的提交: class Solution: def missingNumber(self, arr: List[int]) -> int: if len(arr) == 2: re ...

  7. leetcode-第五场双周赛-1134-阿姆斯特朗数

    第一次提交: class Solution: def isArmstrong(self, N: int) -> bool: n = N l = len(str(N)) res = 0 while ...

  8. leetcode-第五场双周赛-1133-最大唯一数

    第一次提交: class Solution: def largestUniqueNumber(self, A: List[int]) -> int: dict = {} for i in A: ...

  9. LeetCode 第 165 场周赛

    LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...

随机推荐

  1. 头文件 <sys/un.h>

    struct sockaddr_un server_sockaddr ; struct sockaddr_un cli_sockaddr ;

  2. Linux常用命令入门

    在Linux早期的版本中,由于不支持图形化操作,用户基本上都是使用命令行方式来对系统进行操作.掌握常用 的一些Linux命令是非常有必要的,下面将分类进行介绍.由于篇幅有限,在这里我们介绍命令时有些不 ...

  3. Sqlserver复杂查询

    --联表修改 update xyzrb set xyzrb.xy_card=tablsb.card from xyzrb left join tablsb on xyzrb.xybh=tablsb.x ...

  4. Yii2的一些问题

    Yii2中删除能不能串着用 Yii2中find.findAll有什么区别 Yii2中User::findOne($id)和User::find->where(['id'=>1])-> ...

  5. Shiro学习(2)身份验证

    身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...

  6. 【Flutter学习】基本组件之图标组件Icon

    一,概述 图标组件(Icon)为展示图标的组件,该组件不可交互,要实现可交互的图标,可以考虑使用IconButton组件. 图标组件相关的几个组件: IconButton:可交互的Icon: Icon ...

  7. java——文件

  8. delphi 数据处理

    TStringStream 怎样转换String procedure TForm1.Button1Click(Sender: TObject); var ss:TStringStream; str:S ...

  9. NX二次开发-C语言文件读写fwrite和fread函数

    NX9+VS2012 #include <uf.h> #include <stdio.h> UF_initialize(); /* //设置文件路径 const char* f ...

  10. rbd_rados命令拷屏

    mimic或者luminous rbd_rados sudo mount -t ceph 192.168.7.151:6789:/ /mnt -o name=admin,secret=AQBaPZNc ...