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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

我的日程安排表 II

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

731. 我的日程安排表 II

實現一個 MyCalendar 類來存放你的日程安排。如果要添加的時間內不會導致三重預訂時,則可以存儲這個新的日程安排。

MyCalendar 有一個 book(int start, int end)方法。它意味著在 start 到 end 時間內增加一個日程安排,注意,這里的時間是半開區間,即 [start, end), 實數 x 的范圍為, start <= x < end。

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

每次調用 MyCalendar.book方法時,如果可以將日程安排成功添加到日歷中而不會導致三重預訂,返回 true。否則,返回 false 并且不要將該日程安排添加到日歷中。

請按照以下步驟調用MyCalendar 類: MyCalendar cal = new MyCalendar(); MyCalendar.book(start, end)

示例:

MyCalendar();
MyCalendar.book(10, 20); // returns true
MyCalendar.book(50, 60); // returns true
MyCalendar.book(10, 40); // returns true
MyCalendar.book(5, 15); // returns false
MyCalendar.book(5, 10); // returns true
MyCalendar.book(25, 55); // returns true
解釋:
前兩個日程安排可以添加至日歷中。 第三個日程安排會導致雙重預訂,但可以添加至日歷中。
第四個日程安排活動(5,15)不能添加至日歷中,因為它會導致三重預訂。
第五個日程安排(5,10)可以添加至日歷中,因為它未使用已經雙重預訂的時間10。
第六個日程安排(25,55)可以添加至日歷中,因為時間 [25,40] 將和第三個日程安排雙重預訂;
時間 [40,50] 將單獨預訂,時間 [50,55)將和第二個日程安排雙重預訂。

我這個解法應該是最快的一個解法,了,但是空間開銷無法通過

typedef struct {int a[100000];} MyCalendarTwo;MyCalendarTwo* myCalendarTwoCreate() {MyCalendarTwo * m=(MyCalendarTwo *)malloc(sizeof(MyCalendarTwo));int i=0;for(i=0;i<100000;i++){m->a[i]=0;}return m;}bool myCalendarTwoBook(MyCalendarTwo* obj, int start, int end) {int i=0;int j;for(i=start;i<end;i++){obj->a[i]++;if(obj->a[i]>=3){for(j=i;j>=start;j--){obj->a[j]--;}return false;}}return true;}void myCalendarTwoFree(MyCalendarTwo* obj) {}/*** Your MyCalendarTwo struct will be instantiated and called as such:* MyCalendarTwo* obj = myCalendarTwoCreate();* bool param_1 = myCalendarTwoBook(obj, start, end);* myCalendarTwoFree(obj); */

總結

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

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