最近我在一本书中看到了这个问题,我指的是技术访谈。问题是这样的 -
您将获得有关参加某些科目的学生的数据。 你需要制作一个数据结构,这样如果我不查询某个科目的学生或者没有学生考虑过的科目,那么复杂性应该更少。
因此,例如有学生P1参加了S1,S2和S3科目 - 学生P2已经参加S1,S4科目。当我查询P1拍摄的主题时 - 答案应该是S1,S2,S3 当我问问谁采取了S1 - 答案应该是P1& P2
到目前为止,我试过了......
最初我开始使用HashMap和LinkedList的组合来解决问题。 但最多我得到的检索是O(1)和O(N)时间与O(N)空间。你觉得我能做得更好吗?我也想过使用BST,但这并不是很有用。
期待有一些有趣的回应!!
答案 0 :(得分:1)
这种方法的组合应该有效:
这允许预期O(1)
检索学生正在学习的科目列表,或者学生正在攻读科目的学生列表(可能是列表结构将存储计数以允许O(1)
检索元素的数量)。
空间复杂度为O(n)
。
如果你只想要计数,你可以考虑用一个计数来替换“学生名单”(甚至可能是“受试者名单”)。
如果您想支持删除或存在检查,“主题列表”或“学生列表”不会特别有效。为了有效地执行此操作,您可以使用HashSets替换这些列表。