模拟卷Leetcode【普通】729. 我的日程安排表 I
729. 我的日程安排表 I
實現一個 MyCalendar 類來存放你的日程安排。如果要添加的日程安排不會造成 重復預訂 ,則可以存儲這個新的日程安排。
當兩個日程安排有一些時間上的交叉時(例如兩個日程安排都在同一時間內),就會產生 重復預訂 。
日程可以用一對整數 start 和 end 表示,這里的時間是半開區間,即 [start, end), 實數?x 的范圍為, ?start <= x < end 。
實現 MyCalendar 類:
MyCalendar() 初始化日歷對象。
boolean book(int start, int end) 如果可以將日程安排成功添加到日歷中而不會導致重復預訂,返回 true 。否則,返回 false?并且不要將該日程安排添加到日歷中。
示例:
輸入:
[“MyCalendar”, “book”, “book”, “book”]
[[], [10, 20], [15, 25], [20, 30]]
輸出:
[null, true, false, true]
解釋:
MyCalendar myCalendar = new MyCalendar();
myCalendar.book(10, 20); // return True
myCalendar.book(15, 25); // return False ,這個日程安排不能添加到日歷中,因為時間 15 已經被另一個日程安排預訂了。
myCalendar.book(20, 30); // return True ,這個日程安排可以添加到日歷中,因為第一個日程安排預訂的每個時間都小于 20 ,且不包含時間 20 。
提示:
0 <= start < end <= 109
每個測試用例,調用 book 方法的次數最多不超過 1000 次。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/my-calendar-i
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
代碼:
from leetcode_python.utils import *class MyCalendar:def __init__(self):self.books = []def book(self, start: int, end: int) -> bool:for s,e in self.books:if s<end and start<e: return Falseself.books.append([start,end])return Truedef test(data_test):s = MyCalendar()data = data_test # normal# data = [list2node(data_test[0])] # list轉nodereturn s.getResult(*data)def test_obj(data_test):result = [None]obj = MyCalendar(*data_test[1][0])for fun, data in zip(data_test[0][1::], data_test[1][1::]):if data:res = obj.__getattribute__(fun)(*data)else:res = obj.__getattribute__(fun)()result.append(res)return resultif __name__ == '__main__':datas = [# [["MyCalendar","book","book","book","book","book"],[[],[37,50],[33,50],[4,17],[35,48],[8,25]]],# [null,true,false,true,false,false][["MyCalendar", "book", "book", "book", "book", "book", "book", "book", "book", "book", "book", "book", "book","book", "book", "book", "book", "book", "book", "book", "book"],[[], [97, 100], [33, 51], [89, 100], [83, 100], [75, 92], [76, 95], [19, 30], [53, 63], [8, 23], [18, 37],[87, 100], [83, 100], [54, 67], [35, 48], [58, 75], [70, 89], [13, 32], [44, 63], [51, 62], [2, 15]]],]for data_test in datas:t0 = time.time()print('-' * 50)print('input:', data_test)print('output:', test_obj(data_test))print(f'use time:{time.time() - t0}s')備注:
GitHub:https://github.com/monijuan/leetcode_python
CSDN匯總:模擬卷Leetcode 題解匯總_卷子的博客-CSDN博客
可以加QQ群交流:1092754609
leetcode_python.utils詳見匯總頁說明
先刷的題,之后用腳本生成的blog,如果有錯請留言,我看到了會修改的!謝謝!
總結
以上是生活随笔為你收集整理的模拟卷Leetcode【普通】729. 我的日程安排表 I的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一章 基本架设服务器流程
- 下一篇: 证书信任管理器(用于https请求) X