适用于事件日历应用的最佳数据结构

时间:2015-12-07 16:07:24

标签: algorithm data-structures hashmap binary-search-tree

我有一个代表一个事件的类。 所以我们可以通过创建这个类的对象来创建一个事件。构造函数获取description, start time, end time, list of invites, location并返回一个id,用于唯一标识此对象。

Create events : (description, start time, end time, list of invites, location) -> id

现在这个类有另一个方法,它接受一个id并返回一个相应的事件对象

Get event by id : id -> event object

同样我们可以更新活动

Update event -> description, start time, end time

现在我们要做的第四项操作是我们要过滤掉时间范围之间的所有事件

get event : start time, end time

现在我必须使用/设计一个可以有效执行这4个操作的数据结构。 (我的意思是我们现在可以使用文件存储或缓存技术)

前三个操作我认为我可以使用具有id作为键和对象作为值的map / table。 但在这种情况下,我无法有效地进行第四次操作。

再次

我可以使用trie数据结构。

Root Node->
      Month nodes (12 nodes)
      each month node will be having 30(or 31/28) children nodes. 
      and then those children nodes will be having time stamp nodes.

但在这种情况下,前三个操作变得有点效率低。

如何组合这两种数据结构来解决这个问题,并有效地执行所有4种操作。或者是否有更好的数据结构可以完成这项任务。或者我们必须创建自己的自定义数据结构?

1 个答案:

答案 0 :(得分:1)

正如您所说,您可以使用hashmap进行第一次树操作。对于第4个操作,您可以维护(start_time_of_event,id)的排序列表。现在,为了查找(start,end)之间的所有事件,您可以在此有序数组上使用两个二进制搜索,并查找(start,end)之间的所有事件。此方法的空间开销很小,因为您只需要存储idstart_date事件的副本。