Определение звезды - это "тот, кто никого не знает, но все знают его.
. По этому определению в группе людей может быть не более одной" звезды ". Если бы было больше одной звезды, то они оба должны были бы знать другую, иначе другая не была бы звездой, но тогда они сами не были бы звездами.
Таким образом, есть две подзадачи.
- Найдите потенциальные звезды.
Если таких людей более одного, звезды нет, если такой человек точно:
Проверьте, все ли знают этого человека.
Первая часть может быть выполнена с помощью предложенного вами алгоритма. Независимо от того, спрашиваете ли вы, знает ли А В, знает ли С, знает ли D и т. Д., Или если вы спросите, знает ли «победитель» А или В и т. вам потребуется не более O (n) шагов, а не O (nlogn). После этого у вас осталась одна потенциальная звезда, и вы можете выполнить второй шаг, который представляет собой простой цикл над всеми другими людьми в группе.
Сложность по времени для обоих шагов равна O (n) длявсего (все еще) O (n).