您的位置:首页 > 娱乐 > 明星 > 简单项目计划书模板_青岛品牌网站建设_西安seo盐城_电子商务软文写作

简单项目计划书模板_青岛品牌网站建设_西安seo盐城_电子商务软文写作

2025/1/5 15:28:03 来源:https://blog.csdn.net/m0_67598823/article/details/144885015  浏览:    关键词:简单项目计划书模板_青岛品牌网站建设_西安seo盐城_电子商务软文写作
简单项目计划书模板_青岛品牌网站建设_西安seo盐城_电子商务软文写作

题目描述:

实现一个 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)

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com