leetcode-每日一题731. 我的日程安排表 II

简介: 题目需要我们判断在重复的预定时间里,有三重预定的返回false,那我们可以定义一个pair结构体用来表示时间段,MyCalendarTwo结构体用来存成功预定的时间段booked切片,和有重复预定的时间段overlaps切片,overlaps切片用来判断新进的时间段是否跟overlaps有重合预定的情况,若有则返回false,没有则true

4ac436192bf94f4e87fe050915e5e339.png


题目链接:https://leetcode.cn/problems/my-calendar-ii/

孪生弟弟题 729. 我的日程安排表 I:https://leetcode.cn/problems/my-calendar-i/

思路


方法一、直接遍历


直接想法


题目需要我们判断在重复的预定时间里,有三重预定的返回false,那我们可以定义一个pair结构体用来表示时间段,MyCalendarTwo结构体用来存成功预定的时间段booked切片,和有重复预定的时间段overlaps切片,overlaps切片用来判断新进的时间段是否跟overlaps有重合预定的情况,若有则返回false,没有则true


代码示例


type pair struct{ start, end int }
type MyCalendarTwo struct{ booked, overlaps []pair }
func Constructor() MyCalendarTwo {
    return MyCalendarTwo{}
}
func (c *MyCalendarTwo) Book(start, end int) bool {
    for _, p := range c.overlaps {
        if p.start < end && start < p.end {
            return false
        }
    }
    for _, p := range c.booked {
        if p.start < end && start < p.end {
            c.overlaps = append(c.overlaps, pair{max(p.start, start), min(p.end, end)})
        }
    }
    c.booked = append(c.booked, pair{start, end})
    return true
}
func min(a, b int) int {
    if a > b {
        return b
    }
    return a
}
func max(a, b int) int {
    if b > a {
        return b
    }
    return a
}

1410f480d65644589f7a574d879f9ed3.png


复杂度分析


  • 时间复杂度:O(n2)其中 n 表示日程安排的数量。由于每次在进行预定时,都需要遍历所有已经预定的行程安排。


  • 空间复杂度:O(n),其中 n 表示日程安排的数量。需要保存所有已经预定的行程。
目录
相关文章
|
4月前
|
SQL 算法 vr&ar
☆打卡算法☆LeetCode 175. 组合两个表 算法解析
☆打卡算法☆LeetCode 175. 组合两个表 算法解析
|
5月前
|
JavaScript 前端开发
leetcode 1418.点菜展示表(JavaScript)
leetcode 1418.点菜展示表(JavaScript)
23 0
leetcode-每日一题729. 我的日程安排表 I
我们把安排成功的日程插入到日历切片里,Book方法只需要遍历日历切片,如果存在时间交叉的日程则直接返回 false, 没有则将日程插入到日历切片当中,返回true
53 0
leetcode-每日一题729. 我的日程安排表 I
|
存储 容器
LeetCode contest 185 1418. 点菜展示表
LeetCode contest 185 1418. 点菜展示表
|
存储 测试技术
LeetCode每日一题——729. 我的日程安排表 I
实现一个 MyCalendar 类来存放你的日程安排。如果要添加的日程安排不会造成 重复预订 ,则可以存储这个新的日程安排。
80 0
leetcode【哈希表—简单】383.赎金信 II
leetcode【哈希表—简单】383.赎金信 II
leetcode【哈希表—简单】383.赎金信 II
leetcode【哈希表—中等】454.四数相加 II
leetcode【哈希表—中等】454.四数相加 II
leetcode【哈希表—中等】454.四数相加 II
|
28天前
|
机器学习/深度学习 算法
力扣刷题日常(一)
力扣刷题日常(一)
20 2

热门文章

最新文章