【发布时间】:2018-02-27 17:49:00
【问题描述】:
例如,我现在需要实现的称为提交历史记录。这要求我对每个方法都使用比 O(n) 更好的数据结构,有人告诉我使用
HashMap<studentId, TreeMap<Date, studentScore>>
因为,
getBestGrade 方法:在 O(1) 中找到学生的所有提交,然后在 O(N) 中找到最佳提交(您可以通过缓存最佳分数来改进它)。
所以我的问题是,我将如何为 getBestGrade 使用缓存? 我在想的是,首先为树图创建一个类,并在其中添加 put、remove 和 getBestGrade 方法。比我在另一堂课上叫它回来。
另外,缓存的使用如何降低时间复杂度(big-O)?
请帮忙...谢谢。
【问题讨论】:
-
通过单独的 Map 将学生 ID 映射到最大分数,您将实现一个原始缓存,需要 O(1) 才能获得学生的最佳提交。
-
那么,我认为做缓存的方向是正确的吗?
-
例如,在主类中,假设它被称为Assignment,我声明了maps的map(hash-map包含tree-map),命名为'map'。然后我为树形图创建了一个名为 StudentScore 的子类,然后在其中添加方法(put、remove、GetBestGrade)。最后,在主类中,对于 getBestGrade 方法,我这样写,StudentScoreSet t = map.get(studnetId);返回 t.GetBestGrade();
-
如果您使用的是树形图,您可以致电
lastKey以获得最高分 -
执行 lastKey 需要缓存吗?
标签: java caching data-structures big-o