LeetCode:731. 我的日程安排表 II(差分 Java)

目录

731. 我的日程安排表 II

题目描述:

实现代码与解析:

差分

原理思路:


731. 我的日程安排表 II

题目描述:

        实现一个程序来存放你的日程安排。如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排。

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

事件能够用一对整数 startTime 和 endTime 表示,在一个半开区间的时间 [startTime, endTime) 上预定。实数 x 的范围为  startTime <= x < endTime

实现 MyCalendarTwo 类:

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

示例 1:

输入:
["MyCalendarTwo", "book", "book", "book", "book", "book", "book"]
[[], [10, 20], [50, 60], [10, 40], [5, 15], [5, 10], [25, 55]]
输出:
[null, true, true, true, false, true, true]解释:
MyCalendarTwo myCalendarTwo = new MyCalendarTwo();
myCalendarTwo.book(10, 20); // 返回 True,能够预定该日程。
myCalendarTwo.book(50, 60); // 返回 True,能够预定该日程。
myCalendarTwo.book(10, 40); // 返回 True,该日程能够被重复预定。
myCalendarTwo.book(5, 15);  // 返回 False,该日程导致了三重预定,所以不能预定。
myCalendarTwo.book(5, 10); // 返回 True,能够预定该日程,因为它不使用已经双重预订的时间 10。
myCalendarTwo.book(25, 55); // 返回 True,能够预定该日程,因为时间段 [25, 40) 将被第三个日程重复预定,时间段 [40, 50) 将被单独预定,而时间段 [50, 55) 将被第二个日程重复预定。

提示:

  • 0 <= start < end <= 109
  • 最多调用 book 1000 次。

实现代码与解析:

差分

class MyCalendarTwo {private final Map<Integer, Integer> map = new TreeMap<>();public MyCalendarTwo() {}public boolean book(int startTime, int endTime) {map.merge(startTime, 1, Integer::sum);map.merge(endTime, -1, Integer::sum);int cnt = 0;for (Map.Entry<Integer, Integer> t: map.entrySet()) {cnt += t.getValue();if (cnt > 2) {map.merge(startTime, -1, Integer::sum);map.merge(endTime, 1, Integer::sum);return false;}}return true;}
}

原理思路:

        差分记录每个时间点的安排会议次数即可。,当然这题也能打暴力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/66034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 操作 PDF:从零开始创建功能丰富的PDF文档

Java 操作 PDF&#xff1a;从零开始创建功能丰富的PDF文档 引言环境准备依赖引入 创建PDF文档一键生成空白PDF添加表单字段&#xff08;选项&#xff09;添加电子签名添加公章图像 结论 引言 随着数字化办公的普及&#xff0c;PDF格式因其跨平台兼容性和安全性而被广泛应用于各…

DDoS攻击防御方案大全

1. 引言 随着互联网的迅猛发展&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击成为了网络安全领域中最常见且危害严重的攻击方式之一。DDoS攻击通过向目标网络或服务发送大量流量&#xff0c;导致服务器过载&#xff0c;最终使其无法响应合法用户的请求。本文将深…

问题清除指南|关于num_classes与 BCELoss、BCEWithLogitsLoss 和 CrossEntropyLoss 的关系

前言&#xff1a;关于「 num_classes 1 」引发的探究。 2024年尾声&#xff0c;学弟问到一个问题&#xff1a;在研究工作 CNNDetection 的github开源代码 networks/trainer.py 文件的 line 27 self.model resnet50(num_classes1) 中&#xff0c;变量 num_classes 的值为1&…

grouped.get_group((‘B‘, ‘A‘))选择分组

1. df.groupby([team, df.name.str[0]]) df.groupby([team, df.name.str[0]]) 这一部分代码表示对 DataFrame df 按照 两个条件 进行分组&#xff1a; 按照 team 列&#xff08;即团队&#xff09;。按照 name 列的 首字母&#xff08;df.name.str[0]&#xff09;。 df.name.s…

poetry更换国内pip源

poetry 默认使用官方镜像源下载&#xff0c;特别慢并且还报错&#xff0c;在国内每一次poetry配环境请都添加一次环境。 方法一 poetry source add --priorityprimary mirrors https://pypi.tuna.tsinghua.edu.cn/simple/方法二 修改 pyproject.toml 文件 # pyproject.toml…

啥是大模型

介绍完了chatGPT的生成原理, 那么我们继续介绍介绍大模型。 大模型的缩写是LLM&#xff0c;全称是Large Language Model, 所以这个大模型也可以被称作为大语言模型 那么问题来了&#xff0c;为啥有了大模型呢&#xff0c;难道之前都是小模型吗&#xff1f;确实&#xff0c;大模…

SQL字符串截取函数——Left()、Right()、Substring()用法详解

SQL字符串截取函数——Left&#xff08;&#xff09;、Right&#xff08;&#xff09;、Substring&#xff08;&#xff09;用法详解 1. LEFT() 函数&#xff1a;从字符串的左侧提取指定长度的子字符串。 LEFT(string, length)string&#xff1a;要操作的字符串。length&#x…

C# 服务调用RFC函数获取物料信息,并输出生成Excel文件

这个例子是C#服务调用RFC函数&#xff0c;获取物料的信息&#xff0c;并生成Excel文件 上接文章&#xff1a;C#服务 文章目录 创建函数创建结构编写源代码创建批处理文件运行结果-成功部署服务器C#代码配置文件注意&#xff01;&#xff01; 创建函数 创建结构 编写源代码 创建…

打开idea开发软件停留在加载弹出框页面进不去

问题 idea软件点击打开&#xff0c;软件卡在加载弹框进不去。 解决方法 先进入“任务管理器”停止IDEA的任务进程 2.找到IDEA软件保存的本地数据文件夹 路径都是在C盘下面&#xff1a;路径&#xff1a;C:\Users\你的用户名\AppData\Local\JetBrains 删除目录下的文件夹&…

sqlserver sql转HTMM邮件发送

通过sql的形式&#xff0c;把表内数据通过邮件的形式发送出去 declare title varchar(100) DECLARE stat_date CHAR(10),create_time datetime SET stat_dateCONVERT(char(10),GETDATE(),120) SET create_timeDATEADD(MINUTE,-20,GETDATE()) DECLARE xml NVARCHAR (max) DECLAR…

用语言模型 GLM-Zero-Preview 来驱动战场推演

起源是一个验证性需求 如果告诉模型武器装备与战区背景 那么我们能不能推演在有限规模下的两军博弈场景 需求分析&#xff1a;明确推演目标 推演目的&#xff1a;你希望通过推演来分析两军在特定战区背景下的博弈局面&#xff0c;例如评估双方武器装备的对抗效果、作战策略的选…

Linux:各发行版及其包管理工具

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 Debian 包管理工具&#xff1a;dpkg&#xff08;低级包管理器&#xff09;、apt&#xff08;高级包管理器&#xff0c;建立在dpkg基础上&#xff09;包格式&#xff1a;…

Java项目实战II基于小程序的驾校管理系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着汽车保有量的不断增长&#xff0c;驾驶培训市场日…

小程序租赁系统开发的优势与应用探索

内容概要 在如今这个数码科技飞速发展的时代&#xff0c;小程序租赁系统开发仿佛是一张神奇的魔法卡&#xff0c;能让租赁体验变得顺畅如丝。想象一下&#xff0c;无论你需要租用什么&#xff0c;从单车到房屋&#xff0c;甚至是派对用品&#xff0c;只需动动手指&#xff0c;…

AAAI2025:这也能融合?巧用多坐标系融合策略,PC-BEV实现点云分割170倍加速,精度显著提升!

引言&#xff1a;本文提出了一种基于鸟瞰图&#xff08;BEV&#xff09;空间的激光雷达点云分割方法&#xff0c;该方法通过融合极坐标和笛卡尔分区策略&#xff0c;实现了快速且高效的特征融合。该方法利用固定网格对应关系&#xff0c;避免了传统点云交互中的计算瓶颈&#x…

java接口下载zip,不生成中间文件,返回前端文件流

java接口下载zip&#xff0c;不生产中间文件&#xff0c;返回前端文件流 程序设计&#xff1a;代码实现&#xff1a; 程序设计&#xff1a; 前端向后端请求zip文件&#xff0c;zip文件中有多个文件压缩而成&#xff0c;后端操作文件流&#xff0c;而不生成中间文件。最后把zip…

在 pandas.Grouper() 中,freq 参数用于指定时间频率,它定义了如何对时间序列数据进行分组。freq 的值可以是多种时间单位

在 pandas.Grouper() 中&#xff0c;freq 参数用于指定时间频率&#xff0c;它定义了如何对时间序列数据进行分组。freq 的值可以是多种时间单位&#xff0c;具体包括以下几类&#xff1a; 常见的时间频率 (freq) 取值&#xff1a; 1. 日频率&#xff08;Daily&#xff09; …

java下载文件流,不生成中间文件。

java下载文件流&#xff0c;不生成中间文件。 代码设计&#xff1a;代码实现 代码设计&#xff1a; 从前端获取的数据经过后端加工后&#xff0c;生成文件流&#xff0c;并返回前端&#xff0c;&#xff08;不生成中间文件&#xff0c;注意内存&#xff0c;记得关闭流&#xf…

【代码】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 函数注…

职场常用Excel基础04-二维表转换

大家好&#xff0c;今天和大家一起分享一下excel的二维表转换相关内容~ 在Excel中&#xff0c;二维表&#xff08;也称为矩阵或表格&#xff09;是一种组织数据的方式&#xff0c;其中数据按照行和列的格式进行排列。然而&#xff0c;在实际的数据分析过程中&#xff0c;我们常…