题目链接:https://leetcode.cn/problems/my-calendar-i/
思路
1.直接遍历,我们把安排成功的日程插入到日历切片里,Book方法只需要遍历日历切片,如果存在时间交叉的日程则直接返回 false, 没有则将日程插入到日历切片当中,返回true
代码示例
type pair struct { start int end int } type MyCalendar []pair func Constructor() MyCalendar { return MyCalendar{} } func (this *MyCalendar) Book(start int, end int) bool { for _, p := range *this{ if p.end > start && p.start < end{ return false } } *this = append(*this, pair{start, end}) return true } /** * Your MyCalendar object will be instantiated and called as such: * obj := Constructor(); * param_1 := obj.Book(start,end); */
复杂度分析
- 时间复杂度:O(n2) 其中 n 表示日程安排的数量。由于每次在进行预订时,都需要遍历所有已经预订的行程安排。
- 空间复杂度:O(n) 其中 n 表示日程安排的数量,需要保存所有已经预订的行程。