Мне недавно задали этот вопрос в одном из моих телефонных интервью.
"Есть список элементов. И вы должны найти элемент" best"из списка. Элементы сравнимы друг с другом, но сравнение не транзитивно .
Например. если A> B и B> C, то значение A НЕ должно быть больше C.
Вы должны вернуть лучший элемент в качестве ответа, который лучше, чем любой другой элемент в списке. Возможно, такого элемента нет. В этом случае верните ноль. "
Мое решение:
Попытка 1:
Простое O (n ^ 2) решение. Сравнение каждого элемента с каждым другим элементом.
Интервьюер не был удовлетворен.
Попытка 2:
Начните сравнивать первый элемент со вторым элементом и далее. Для любого элемента 'E', если A> E, пометьте E (возможно, используя другой массив / список / и т. Д.) И не рассматривайте E для дальнейшего сравнения. Это потому, что есть по крайней мере 1 элемент, который лучше, чем E, поэтому E определенно не ответ.
Сложность все еще O (n ^ 2) с некоторым улучшением по сравнению с предыдущей попыткой.
Он все еще не был удовлетворен. Может кто-нибудь придумать какое-нибудь лучшее решение?