Python描述 LeetCode 732. 我的日程安排表 III
Python描述 LeetCode 732. 我的日程安排表 III
大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、CSDN、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~
如果喜欢博主的文章可以关注博主的个人公众号【亓官劼】(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.
本文原创为【亓官劼】(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号【亓官劼】。
题目
当 k
个日程安排有一些时间上的交叉时(例如 k
个日程安排都在同一时间内),就会产生 k
次预订。
给你一些日程安排 [start, end)
,请你在每个日程安排添加后,返回一个整数 k
,表示所有先前日程安排会产生的最大 k
次预订。
实现一个 MyCalendarThree
类来存放你的日程安排,你可以一直添加新的日程安排。
MyCalendarThree()
初始化对象。int book(int start, int end)
返回一个整数k
,表示日历中存在的k
次预订的最大值。
示例:
输入:
["MyCalendarThree", "book", "book", "book", "book", "book", "book"]
[[], [10, 20], [50, 60], [10, 40], [5, 15], [5, 10], [25, 55]]
输出:
[null, 1, 1, 2, 3, 3, 3]解释:
MyCalendarThree myCalendarThree = new MyCalendarThree();
myCalendarThree.book(10, 20); // 返回 1 ,第一个日程安排可以预订并且不存在相交,所以最大 k 次预订是 1 次预订。
myCalendarThree.book(50, 60); // 返回 1 ,第二个日程安排可以预订并且不存在相交,所以最大 k 次预订是 1 次预订。
myCalendarThree.book(10, 40); // 返回 2 ,第三个日程安排 [10, 40) 与第一个日程安排相交,所以最大 k 次预订是 2 次预订。
myCalendarThree.book(5, 15); // 返回 3 ,剩下的日程安排的最大 k 次预订是 3 次预订。
myCalendarThree.book(5, 10); // 返回 3
myCalendarThree.book(25, 55); // 返回 3
提示:
0 <= start < end <= 109
- 每个测试用例,调用
book
函数最多不超过400
次
解题思路
这里可以采用差分数组的方式,每次更新时只要在start的位置+1,end的位置减一即可。这里由于start和end的范围比较大,无法直接开数组,因此这里使用有序字典进行记录数据。
Python描述
from sortedcontainers import SortedDictclass MyCalendarThree:def __init__(self):self.cnt_dict = SortedDict()def book(self, start: int, end: int) -> int:# 使用差分数组self.cnt_dict[start] = self.cnt_dict.get(start,0) + 1self.cnt_dict[end] = self.cnt_dict.get(end,0) - 1tmp = 0res = 0for item in self.cnt_dict.values():tmp += itemres = max(tmp,res)return res
Python描述 LeetCode 732. 我的日程安排表 III相关推荐
- java人员安排表_Java实现 LeetCode 732 我的日程安排表 III(暴力 || 二叉树)
732. 我的日程安排表 III 实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排. MyCalendar 有一个 book(int start, int end)方法 ...
- [LeetCode]732. 我的日程安排表 III
题目 732. 我的日程安排表 III 732. 我的日程安排表 III 当 k 个日程安排有一些时间上的交叉时(例如 k 个日程安排都在同一时间内),就会产生 k 次预订.给你一些日程安排 [sta ...
- LeetCode 732. 我的日程安排表 III
732. 我的日程安排表 III [离散化的差分数组] class MyCalendarThree {// 离散差分数组 1:37Map<Integer, Integer> map = n ...
- LeetCode 732. 我的日程安排表 III(差分思想)
文章目录 1. 题目 2. 解题 1. 题目 实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排. MyCalendar 有一个 book(int start, int ...
- 【宫水三叶的刷题日记】732. 我的日程安排表 III
题目描述 这是 LeetCode 上的 「732. 我的日程安排表 III」 ,难度为 「困难」. Tag : 「线段树(动态开点)」.「分块」.「线段树」 当 个日程安排有一些时间上的交叉时(例如 ...
- 732. 我的日程安排表 III
732. 我的日程安排表 III 原始题目链接:https://leetcode.cn/problems/my-calendar-iii/ 当 k 个日程安排有一些时间上的交叉时(例如 k 个日程安排 ...
- Python描述 LeetCode 1037. 有效的回旋镖
Python描述 LeetCode 1037. 有效的回旋镖 大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术博文,主要包括前端开 ...
- Python描述 LeetCode 334. 递增的三元子序列
Python描述 LeetCode 334. 递增的三元子序列 大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术博文,主要包括前端 ...
- Python描述 LeetCode 875. 爱吃香蕉的珂珂
Python描述 LeetCode 875. 爱吃香蕉的珂珂 大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术博文,主要包括前端开 ...
最新文章
- 限制HTTP数据包发送Referer
- sklearn(五)计算acc:使用metrics.accuracy_score()计算分类的准确率
- Android native 开发总结
- 开源 java CMS - FreeCMS2.3员
- Sql 行转列 STUFF
- Git Bash中npm配置,加速下载等作用
- 更改oracle背景,Oracle 11gR2修改用户后导致系统HANG住
- BZOJ4423: [AMPPZ2013]Bytehattan
- 用c语言编写图形的变换程序,利用C语言实现二维图形的变换
- 全自动与半自动手表的区别_半自动和全自动的区别在哪里?
- ubuntu 16.04 安装ftp服务
- 纤亿通教你如何选择合适的 Cat6 网线
- 珠海市世鸿置业有限公司5周年线下交流会带你学会用基金理财
- Linux系统中sit0是做什么的
- 如何用PS的样式制作图片椭圆形边框
- 雷柏V500机械键盘——重复按键故障原因之一
- LittleVGL(LVGL)学习笔记——PC 模拟器的安装和使用(CodeBlocks)
- Delphi中的编译期函数Dec,Inc,Odd,Pred,Succ,Ord,Chr,Low,High,Sizeof【转】
- FOTA与 SOTA介绍
- 云南林业计算机单招试题,2021年云南林业职业技术学院单招数学考试模拟试题库...
热门文章
- IDEA常用快捷键和谷歌浏览器快捷键Mac版
- html常用标签及属性,常用英语单词
- 应广单片机PMC150/PMS150
- 【花一周,打造属于自己的一台DIY3D打印机1.0】
- 天拓分享|西门子plc常见接口及通讯协议有哪些?
- 菜鸟硬件学习笔记(一)
- 【深度学习:21 天实战 Caffe】课后习题参考答案
- 找个搞IOS逆向的大佬写个越狱插件,接单的联系,APP没加密,有可参照,有接单的大佬请联系下
- 基于android的地图毕业设计,基于android百度地图应用系统_毕业设计.docx
- 2021,一起庖丁解“黄牛”