LC729.我的日程表

news/2024/12/22 14:23:54/

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


http://www.ppmy.cn/news/389528.html

相关文章

创建每月的日程表

下面是我弄好的日程表; 增加计划按钮可以自由的向页面中增加计划&#xff0c; 日程表中&#xff0c;还有编辑和删除按钮&#xff0c;提供给用户自由删除和修改日程 日程表中基于颜色区分等级&#xff0c;等级表示的是计划优先程度&#xff0c;等级需要多少可以自己给的&#xf…

日历日程安排表格calendar

自定义vue日历组件,可用于日程安排,人员分工 组件:引用了moment插件和iview的日期选择组件 <template><div class"canlendar-container"><div class"time-selector"><slot name"otherOperate"></slot><Butto…

日程表、学生课表插件

Timetables GitHub地址 日程表插件&#xff0c;在线预览 demo1 、demo2 Timetables1 Timetables 安装 npm install timetables 复制代码 直接引入 或者直接引入该地址下Timetables.min.js 使用 import Timetables from timetablestim;let Timetable;// 在可以获取到真实dom节点…

测试计划模板

软件测试计划 版本历史(HISTORY OF VERSION) 版本号 生效日期 版本说明/变更理由/变更内容 备注 V1.0 2014-09-10 测试计划初稿 无 目录 一、编写目的 1 二、项目…

算法-日程表

1 题目 设有n-2个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表: ①每个选手必须与其他n-1个选手各赛一次; ②每个选手一天只能赛一次; 循环赛一共进行n-1天。 按此要求可将比赛日程表设计成有n行和n-1列的表。在表中第i行和第j列处填入第i个选手在第j天所遇…

FullCalendar(日程管理控件)

(以下是我学习FullCalendar控件时&#xff0c;网络上收集的一些资料) 第一部分&#xff08;官方资料&#xff09; jQuery.fullCalendar官方网址: http://arshaw.com/fullcalendar/ jquery.fullCalendar英文文档: http://arshaw.com/fullcalendar/docs/ jquery.fullCalendar下载…

ES节点磁盘水位线cluster.routing.allocation.disk.watermark

为了控制es节点磁盘写入大小&#xff0c;es设置了水位线这一参数&#xff0c;具体有两个&#xff1a; cluster.routing.allocation.disk.watermark.low (Dynamic) Controls the low watermark for disk usage. It defaults to 85%, meaning that Elasticsearch will not alloc…

专属EE的精美电子漫画

关注、星标公众号&#xff0c;精彩内容每日送达 来源&#xff1a;网络素材 ▲ 图1 硬盘表面的指纹 ▲ 图2 电路中的维修人员 ▲ 图3 电路中的拆卸工人 ▲ 图4 电路进行局部维修 ▲ 图5 电路环境下的钻探工 ▲ 图6 磁盘表面的施工人员 ▲ 图7 搬运电阻 ▲ 图8 这个电容与有问题 …