当前位置: 首页 > 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)

 

 

相关文章:

Leetcode729: 我的日程安排表 I

题目描述&#xff1a; 实现一个 MyCalendar 类来存放你的日程安排。如果要添加的日程安排不会造成 重复预订 &#xff0c;则可以存储这个新的日程安排。 当两个日程安排有一些时间上的交叉时&#xff08;例如两个日程安排都在同一时间内&#xff09;&#xff0c;就会产生 重复…...

青少年编程与数学 02-006 前端开发框架VUE 02课题、创建工程

青少年编程与数学 02-006 前端开发框架VUE 02课题、创建工程 一、开发环境&#xff08;一&#xff09;WebStorm安装WebStorm配置WebStorm安装中文语言包安装 Translation插件 &#xff08;二&#xff09;Node.jsWindows系统安装Node.jsLinux系统安装Node.jsNode.js与Vue.js的关…...

Redis的生态系统和社区支持

Redis的生态系统和社区支持 1. Redis 生态系统 1.1 Redis核心 Redis 是一个高性能的内存存储系统,支持丰富的数据结构(如字符串、列表、集合、哈希和有序集合)。它的核心提供了: 高性能数据存储:单线程模型支持每秒数百万级别的操作。多种数据结构:适用于多样化场景,如…...

Tomcat解析

架构图 核心功能 Tomcat是Apache开源的轻量级Java ServletServlet容器&#xff0c;其中一个Server&#xff08;Tomcat实例&#xff09;可以管理多个Service&#xff08;服务&#xff09;&#xff0c;一个Service包含多个Connector和一个Engine&#xff0c;负责管理请求到应用的…...

UML之组合与聚合

关联和链接关系在很多情况下是对称的&#xff0c;即被关联的两个类都有以自己为源端对方为目标端的角色存在&#xff0c;而且角色与源端类的属性是等价的&#xff0c;即在关联一端的关联端&#xff08;角色&#xff09;等价于另外一端的属性。例如&#xff0c;在下图中&#xf…...

数据结构理论篇(期末突击)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; 学校课程突击 下面均是为了应付学校考试所用&#xff0c;如果有涉及部分知识点下面未说明&#xff0c;可以去我的数据结构专栏看看或者自行在…...

《一文读懂PyTorch核心模块:开启深度学习之旅》

《一文读懂PyTorch核心模块:开启深度学习之旅》 一、PyTorch 入门:深度学习的得力助手二、核心模块概览:构建深度学习大厦的基石三、torch:基础功能担当(一)张量操作:多维数组的神奇变换(二)自动微分:梯度求解的幕后英雄(三)设备管理:CPU 与 GPU 的高效调度四、to…...

摆脱Zotero存储限制:WebDAV结合内网穿透打造个人文献管理云平台

文章目录 前言一、Zotero安装教程二、群晖NAS WebDAV设置三、Zotero设置四、使用公网地址同步Zotero文献库五、使用永久固定公网地址同步Zotero文献库 前言 如果你是科研工作者、学生或者任何需要频繁处理大量学术资料的人士&#xff0c;你一定对如何高效管理和引用文献感到头…...

Flutter封装一个三方ViewPager学习

Flutter如何实现一个增强的 PageView&#xff0c;支持自定义页面切换动画。 前置知识点学习 CrossAxisAlignment CrossAxisAlignment 是 Flutter 中用于控制布局子组件在交叉轴&#xff08;cross axis&#xff09;方向上的对齐方式的一个枚举类。它主要在 Flex 布局模型中使…...

服务器数据恢复—离线盘数超过热备盘数导致raidz阵列崩溃的数据恢复

服务器数据恢复环境&故障&#xff1a; 一台配有32块硬盘的服务器在运行过程中突然崩溃不可用。经过初步检测&#xff0c;基本上确定服务器硬件不存在物理故障。管理员重启服务器后问题依旧。需要恢复该服务器中的数据。 服务器数据恢复环境&#xff1a; 1、将服务器中硬盘…...

nginx-nginx的缓存集成

缓存的概念 缓存就是数据交换的缓冲区&#xff0c;被称作cache&#xff0c;访用户想要获取数据时&#xff0c;就会先从缓存中去查询数据&#xff0c;如果缓存中有就会直接返回给用户&#xff0c;若果缓存中没有&#xff0c;则会发出请求从服务器中重新查询数据&#xff0c;将数…...

【Vim Masterclass 笔记01】Section 1:Course Overview + Section 2:Vim Quickstart

文章目录 Section 1&#xff1a;Course Introduction 课程概述S01L01 Course Overview 课程简介课程概要 S01L02 Course Download 课程资源下载S01L03 What Vim Is and Why You Should Learn It 何为 Vim&#xff1f;学来干啥&#xff1f;1 何为 Vim2 为何学 Vim Section 2&…...

【数据库系列】Spring Boot 中使用 MyBatis 详细指南

一、基础介绍 1.1 MyBatis MyBatis 是一款优秀的持久层框架&#xff0c;它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息&#xff0c;将接口和 Java 的 P…...

Azure Airflow 中配置错误可能会使整个集群受到攻击

网络安全研究人员在 Microsoft 的 Azure 数据工厂 Apache Airflow 中发现了三个安全漏洞&#xff0c;如果成功利用这些漏洞&#xff0c;攻击者可能会获得执行各种隐蔽操作的能力&#xff0c;包括数据泄露和恶意软件部署。 “利用这些漏洞可能允许攻击者以影子管理员的身份获得…...

Python跨年烟花

目录 系列文章 写在前面 技术需求 完整代码 下载代码 代码分析 1. 程序初始化与显示设置 2. 烟花类 (Firework) 3. 粒子类 (Particle) 4. 痕迹类 (Trail) 5. 烟花更新与显示 6. 主函数 (fire) 7. 游戏循环 8. 总结 注意事项 写在后面 系列文章 序号直达链接爱…...

【代码】Python|Windows 批量尝试密码去打开加密的 Word 文档(docx和doc)

文章目录 前言完整代码Githubdocxdoc 代码解释1. msoffcrypto 方法&#xff08;用于解密 .docx 文件&#xff09;read_secret_word_file 函数密码生成与解密尝试try_decrypt_file 函数 2. comtypes 方法&#xff08;用于解密 .doc 文件&#xff09;read_secret_word_file 函数注…...

java开发中注解汇总​​

注解作用位置注意mybatis Data Getter Setter ToString EqualsAndHashCode AllArgsConstructor NoArgsConstructor Data 代替&#xff1a;无参构造&#xff0c;get&#xff0c;set&#xff0c;toString&#xff0c;hashCode&#xff0c;equals Getter Setter 可放在类和方法上&…...

C# 设计模式(结构型模式):外观模式

C# 设计模式&#xff08;结构型模式&#xff09;&#xff1a;外观模式 (Facade Pattern) 在复杂系统中&#xff0c;往往会涉及到多个子系统、模块和类。这些子系统的接口和功能可能会让使用者感到困惑和复杂。在这种情况下&#xff0c;我们可以使用外观模式&#xff08;Facade…...

PowerShell 常见问题解答

PowerShell 是微软开发的一种功能强大的命令行界面和脚本语言&#xff0c;广泛应用于系统管理和自动化任务。以下是一些使用 PowerShell 时常见的问题及其解决方法。 什么是 PowerShell&#xff1f; PowerShell 是基于 .NET 的命令行界面&#xff08;CLI&#xff09;和脚本语言…...

计算机网络 (15)宽带接入技术

前言 计算机网络宽带接入技术是指通过高速、大容量的通信信道或网络&#xff0c;实现用户与互联网或其他通信网络之间的高速连接。 一、宽带接入技术的定义与特点 定义&#xff1a;宽带接入技术是指能够传输大量数据的通信信道或网络&#xff0c;其传输速度通常较高&#xff0c…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...