当前位置: 首页 > news >正文

Leetcode729: 我的日程安排表 I

题目描述:

实现一个 MyCalendar 类来存放你的日程安排。如果要添加的日程安排不会造成 重复预订 ,则可以存储这个新的日程安排。

当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生 重复预订 。

日程可以用一对整数 startTime 和 endTime 表示,这里的时间是半开区间,即 [startTime, endTime), 实数 x 的范围为,  startTime <= x < endTime 。

实现 MyCalendar 类:

  • MyCalendar() 初始化日历对象。
  • boolean book(int startTime, int endTime) 如果可以将日程安排成功添加到日历中而不会导致重复预订,返回 true 。否则,返回 false 并且不要将该日程安排添加到日历中。

代码思路:

类定义和初始化

  1. 类定义class MyCalendar: 定义了一个名为MyCalendar的类。

  2. 初始化方法 __init__(self):

    • 创建一个名为temp的集合(set)。这个集合用来存储已经预定的时间段的元组,每个元组包含两个元素:开始时间和结束时间,即(start, end)
    • 使用集合是因为集合提供了快速的成员检查和添加操作,这对于判断新的预定是否与已有预定重叠非常有用。

预定方法

  1. 预定方法 book(self, start: int, end: int) -> bool:
    • 这个方法接受两个参数:start(预定的开始时间)和end(预定的结束时间)。
    • 定义一个名为judge的布尔变量,初始化为True,用于标记新的预定是否与已有预定重叠。
  2. 遍历已有预定:
    • 使用一个for循环遍历temp集合中的每个预定(i_start, i_end)
    • 对于每个已存在的预定,检查新的预定是否与其重叠。重叠的条件是:新的预定的开始时间start小于已有预定的结束时间i_end,且新的预定的结束时间end大于已有预定的开始时间i_start
    • 如果新的预定不与当前遍历的预定重叠,则继续遍历(使用continue)。
    • 如果发现重叠,则将judge设置为False并跳出循环。
  3. 添加新的预定或返回结果:
    • 如果judge保持为True(即没有重叠),则将新的预定(start, end)添加到temp集合中,并返回True表示预定成功。
    • 如果judge变为False(即存在重叠),则直接返回False表示预定失败。

使用示例

  • 创建一个MyCalendar对象:obj = MyCalendar()
  • 使用book方法预定时间段:param_1 = obj.book(start, end)
    • 如果返回True,表示预定成功。
    • 如果返回False,表示预定失败,因为与已有预定重叠。

代码实现:

class MyCalendar:def __init__(self):# 哈希set存储目标值self.temp = set()def book(self, start: int, end: int) -> bool:judge = True# 判断是否符合条件for i in self.temp:if start >= i[1] or end <= i[0]:continueelse:judge = Falsebreakif judge:self.temp.add((start, end))return Trueelse:return False# Your MyCalendar object will be instantiated and called as such:
# obj = MyCalendar()
# param_1 = obj.book(start,end)

 

 

http://www.lryc.cn/news/514416.html

相关文章:

  • 青少年编程与数学 02-006 前端开发框架VUE 02课题、创建工程
  • Redis的生态系统和社区支持
  • Tomcat解析
  • UML之组合与聚合
  • 数据结构理论篇(期末突击)
  • 《一文读懂PyTorch核心模块:开启深度学习之旅》
  • 摆脱Zotero存储限制:WebDAV结合内网穿透打造个人文献管理云平台
  • Flutter封装一个三方ViewPager学习
  • 服务器数据恢复—离线盘数超过热备盘数导致raidz阵列崩溃的数据恢复
  • nginx-nginx的缓存集成
  • 【Vim Masterclass 笔记01】Section 1:Course Overview + Section 2:Vim Quickstart
  • 【数据库系列】Spring Boot 中使用 MyBatis 详细指南
  • Azure Airflow 中配置错误可能会使整个集群受到攻击
  • Python跨年烟花
  • 【代码】Python|Windows 批量尝试密码去打开加密的 Word 文档(docx和doc)
  • java开发中注解汇总​​
  • C# 设计模式(结构型模式):外观模式
  • PowerShell 常见问题解答
  • 计算机网络 (15)宽带接入技术
  • 前端Python应用指南(六)构建RESTful API:使用Flask和Django实现用户认证与授权
  • 【Unity3D】基于UGUI——简易版 UI框架
  • 算法排序算法
  • 第3章 总线
  • 手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电
  • 共阳极LED的控制与短路问题解析
  • 华为消费级QLC SSD来了
  • liunx下载gitlab
  • 深度学习模型预测值集中在某一个值
  • Sqoop的使用
  • OpenGL ES 04 图片数据是怎么写入到对应纹理单元的