jzoffer

package
v0.0.0-...-6c0d317 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 15, 2022 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

* @lc app=leetcode.cn id=729 lang=golang * * [729] 我的日程安排表 I * * https://leetcode.cn/problems/my-calendar-i/description/ * * algorithms * Medium (53.95%) * Likes: 123 * Dislikes: 0 * Total Accepted: 14.5K * Total Submissions: 26.8K * Testcase Example: '["MyCalendar","book","book","book"]\n[[],[10,20],[15,25],[20,30]]' * * 实现一个 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 <= 10^9 * 每个测试用例,调用 book 方法的次数最多不超过 1000 次。 * *

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type MyCalendar

type MyCalendar struct {
	// contains filtered or unexported fields
}

func Constructor

func Constructor() MyCalendar

func (*MyCalendar) Book

func (m *MyCalendar) Book(start, end int) bool

type MyCalendar1

type MyCalendar1 struct {
	*redblacktree.Tree
}

-----------------------1. 红黑树实现-------------------------- 作者:endlesscheng 链接:https://leetcode.cn/problems/my-calendar-i/solution/go-ping-heng-shu-by-endlesscheng-ihq4/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

func Constructor1

func Constructor1() *MyCalendar1

func (*MyCalendar1) Book

func (c *MyCalendar1) Book(start, end int) bool

type MyCalendar2

type MyCalendar2 struct {
	// contains filtered or unexported fields
}

题目的意思就是说两个数组之间不能有交叉的范围 而且0 <= start < end,即[start, end) 那我们可以自建一个二叉搜索树,依次插入树中 比较当前节点的max(注意max取不到,右边的数为开区间)是否小于等于给定的start,如果满足,往右子树找 比较当前节点的min是否大于等于给定的end(注意end取不到,右边的数为开区间),如果满足,往左子树找 最后看是否能插入一个新节点 如果插入不了,返回false 方法二为红黑树 floor为向下取,即查找小于或等给定的参数 ceiling为向上取,即查找大于或等给定的参数

作者:XiaoWei_Algorithm 链接:https://leetcode.cn/problems/my-calendar-i/solution/by-xiaowei_algorithm-qmyv/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

func Constructor2

func Constructor2() *MyCalendar2

func (*MyCalendar2) Book

func (m *MyCalendar2) Book(start, end int) bool
			 min   max
               -2 -1
                   10 20
				0 10  20 30

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL