Это относится к Java 7.
У нас есть список предметов в порядке приоритета List<SubjectId>
Существует Карта студентов к списку предметов, выбранных для - Map<StudentId,List<SubjectId>>
Цель -чтобы найти предмет с наивысшим приоритетом, выбранный всеми (общий знаменатель), и вернуть его в виде карты для всех учащихся.
Входные данные:
List<SubjectId>=['1021','1023','1025']
Map<StudentId,List<SubjectId>>={'1',['1025,'1027'];'2',['1021',1025'];'3',['1022','1025']}
Output Map = {'1','1025';'2','1025';'3','1025'}
В данный момент мы повторяем весь списокстуденты по каждому предмету - составляя выходную карту по пути.
Если предмет найден отсутствующим для любого - карта отбрасывается - и мы переходим к следующему предмету.
Есть ли ещеэффективный O (N) подход?