LC729.我的日程表
Leetcode地址:729. 我的日程安排表 I - 力扣(LeetCode)
题目理解:
两个区间[s1,e1],[s2,e2]无交集的时候,e1<=s2或,e2<=s1。故而判定有交集的时候:s1<e2 and e1>s2
解法1.直接遍历
时间复杂度:O(n^2)
空间复杂度:O(n)
代码如下:
class MyCalendar:def __init__(self):self.books=[]def book(self, start: int, end: int) -> bool:if any(start<r and end>l for l,r in self.books):return Falseself.books.append((start,end))return True
解法2:二分查找
根据性质,start插入的位置应为偶数,且end小于后一个位置,因为后一个位置是下一个区间的开始。
时间复杂度:O(nlogn), 二分查找的时间复杂度为O(logn)
空间复杂度:O(n)
因为这里如果出现(10,20)(20,30)这种start2=end1的情况,是属于不交叉的,所以二分查找时选择bisect_right
!需要注意的是,book[i:i]的赋值在python中是O(n)的复杂度,数据量大时会超时。
代码如下:
from bisect import bisect_right
class MyCalendar:def __init__(self):self.books=[]def book(self, start: int, end: int) -> bool:i=bisect_right(self.books,start)if i%2==1 or (i<len(self.books) and self.books[i]<end):return Falseself.books[i:i]=[start,end]return True
LC729.我的日程表相关推荐
- 软件纠错的六个阶段——《论死亡与临终》中的“库伯勒-罗丝模型”
我估计很少人知道这个库伯勒-罗丝模型或读过伊丽莎白‧库伯勒-罗丝的<论死亡与临终>这本书.先让大家了解一下这个模型. 什么是"库伯勒-罗丝模型" 库伯勒-罗丝模型(Kü ...
- java 计划日视图,GitHub - sddysz/calendarSchedule: 日程表,仿滴答清单,包含日视图、三日视图、周视图、月视图、列表视图、同步手机系统日程、添加日程...
calendarSchedule 日程表,仿滴答清单,包含日视图.三日视图.周视图.月视图.列表视图 此项目是仿滴答清单做的一个日程表,现包括的功能有:日视图.三日视图.周视图.月视图.列表视图(周月 ...
- python【数据结构与算法】循环赛日程表(分治)
文章目录 1 概述 2 解决 1 概述 设计一个满足以下要求的比赛日程表: 每个选手必须与其他n-1个选手各赛一次: 每个选手一天只能赛一次: 循环赛一共需要进行n-1天. 由于n=2^k个运动员,显 ...
- 2006年世界杯小组赛日程表
2006年世界杯小组赛日程表 业余爱好,现在这里记录一下,以便查阅 赛程-时间 赛程-小组赛 赛程-淘汰赛 场序 日期 时间 地点 A组对阵 1 6月10日 00:00 慕尼黑 德国-哥斯达黎加 2 ...
- 分治法之循环赛日程表
问题描写叙述: 设有n(n = 2^k)位选手參加网球循环赛,循环赛共进行n-1天,每位选手要与 其它n-1位选手比赛一场,且每位选手每天必须比赛一场,不能轮空 ...
- 分治法【锦标赛问题:设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能赛一次; (3)循环赛一共进行n-1天。】
目 录 1.问题 2.问题分析 3.程序代码(非递归) 4.程序代码(递归) 5.总结 1.问题 锦标赛问题:设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次: ( ...
- 利用 Sunbird 处置你的日程表
Toy Posted in Apps Sunbird 是由 Mozilla Powered 的自力日程表处置轨范,它基于 XUL 构建,具有很好的跨平台特性.目前,Sunbird 如故在测试当中,尚无 ...
- 用递归与分治策略求解网球循环赛日程表_算法设计:分治法(比赛日程安排)...
一.算法思路 1.思路 分治算法的思想是:对于一个规模位N的问题,若该问题可以容易解决(比如规模N较小),则直接解决,否则将其分解为M个规模较小的子问题,这些子问题互相独立,并且与原问题形式相同,递归 ...
- 减肥日程表(WPS文档反馈群253147947)
减肥日程表(WPS文档反馈群253147947) 一.注意事项 1.主食不可不吃: 2.不必拒绝肉类: 3.要减少摄取甜食.酒及糖分高的水果. 二.要求 1.多喝温热的水或常温的食物,不能吃冷饮,喝冰 ...
最新文章
- 从简单到高并发服务器(一)
- linux开启kafka消费者命令,Linux kafka常用命令
- [深度学习]Ubuntu16.04 + GTX 1050 + cuda8.0 + cuDNN5.1 + caffe安装详解
- Python—Mysql—Dbvisualizer
- Mybatis insert操作细节【ID】
- PID控制器改进笔记之二:改进PID控制器之手自动切换
- OpenCV Mat基础认知感
- Android Themes与Styles实践
- qt 右键显示设置界面 后台运行_1.1安装Qt
- node csrf 防御 待续
- RHCE 学习笔记(32) - DNS
- Java String startsWith()方法
- DBV命令行工具检测坏块
- 苏州大学计算机考研资料汇总
- java将bmp文件转为jpg_在PHP中将BMP转换为JPG
- Hadoop从零开始的搭建(伪分布式)
- 《Qt 学习之路 2》
- Zxing系列之设置二维码图片背景透明教程
- 35岁,还学编程是不是很难
- iOS 识别车辆vin码方法汇总,免费并且效果极佳识别速度极快OCR识别VIN码