poo*_*ank 7 java algorithm time-complexity data-structures
我有相应标记和等级的学生的以下信息
Name Marks Rank
A 30 1
B 20 2
C 10 3
Run Code Online (Sandbox Code Playgroud)
学生的等级与学生的分数成反比.我必须找到最佳的数据结构来存储上述信息,以便以最佳方式执行以下操作(最佳时间复杂度).可以假设学生姓名是唯一的.
我正在考虑使用两个hashmaps一个用于学生和标记映射,另一个用于学生姓名和排名映射.这有更好的数据结构吗?有没有办法可以利用秩与标记成反比的事实.
这可以通过两种数据结构完成:
这允许您在以下位置执行以下所有操作O(logn):
此外,O(1)仅使用哈希映射在(平均情况下)中查找学生成绩.
注意:
您可以将学生姓名 - >成绩图的实现切换为树图而不是哈希图,而不会过多地影响复杂性,并保证更好的最坏情况行为.(通过此更改,找到等级也将是O(logn)而不是O(1).