日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【leetcode729:我的日程安排表】

發布時間:2023/12/18 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【leetcode729:我的日程安排表】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述:

實現一個 MyCalendar 類來存放你的日程安排。如果要添加的日程安排不會造成 重復預訂 ,則可以存儲這個新的日程安排。

當兩個日程安排有一些時間上的交叉時(例如兩個日程安排都在同一時間內),就會產生 重復預訂 。

日程可以用一對整數 start 和 end 表示,這里的時間是半開區間,即 [start, end), 實數 x 的范圍為, start <= x < end 。

實現 MyCalendar 類:

MyCalendar() 初始化日歷對象。
boolean book(int start, int end) 如果可以將日程安排成功添加到日歷中而不會導致重復預訂,返回 true 。否則,返回 false 并且不要將該日程安排添加到日歷中。
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/my-calendar-i

輸入:

["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 。 ## 解題思路 因為需要持久化之前所有的預定,所以考慮使用一個鏈表保存所有的預定時間 后續添加時比對,所以類里只需要一個鏈表。

java代碼:

// An highlighted block class MyCalendar {//鏈表里保存所有預定的起止時間List<Integer[]> calender;public MyCalendar() {calender=new ArrayList<>();}public boolean book(int start, int end) {for(int i=0;i<calender.size();i++){Integer[] arr=calender.get(i);int left = arr[0];int right= arr[1];//一端在里一端在外 || 包含 返回falseif(start>=left&&start<right){return false;}if(end>left&&end<=right){return false;}if(start<=left&&end>=right){return false;}}calender.add(new Integer[]{start,end});return true;} }

python代碼

class MyCalendar(object):def __init__(self):self.calender = []def book(self, start, end):""":type start: int:type end: int:rtype: bool"""i = 0while i<len(self.calender):arr = self.calender[i]left = arr[0];right= arr[1];if start>=left and start<right:return Falseif end>left and end<=right:return Falseif start<=left and end>=right:return Falsei+=1self.calender.append([start,end])return True
運行截圖:



可以看出,兩種語言執行用時有較大差距。

總結

以上是生活随笔為你收集整理的【leetcode729:我的日程安排表】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。