【发布时间】:2015-05-09 09:38:15
【问题描述】:
在一次采访中,有人问我给你两个对象,学生和课程,它们之间存在多对多关系。一个学生可以注册不止一门课程,也可以有很多学生注册一门课程。设计一个有效的数据结构来存储这些数据,记住搜索的时间复杂度应该是最佳的。可以搜索单个课程注册的学生列表,也可以搜索单个学生注册的课程列表。
我回答说我们可以使用两个 HashMap,一个用于 StudentName -> Course List Lookup,另一个用于 Course Name -> Student List Lookup。对于这两种情况,搜索都将在 O(1) 中进行。
缺点:你会占用大量内存,如果学生的课程发生变化,你需要记账(你必须更新课程名称映射中的条目)。但这不是问题所在,我猜搜索不会比 O(1) 更好。
你能告诉我什么是最好的数据结构吗
【问题讨论】:
-
IMO 您的解决方案平均会在恒定时间内工作,这是一个理想的解决方案。就性能而言,搜索也永远不会比常数 O(1) 更好,但常数因素有时会根据输入大小而无法达到目的。
标签: java data-structures