У меня был следующий вопрос интервью.
Существует массив элементов nxn. Массив частично отсортирован. Самый большой элемент в строке i
меньше самого маленького элемента в строке i+1
.
Как вы можете найти данный элемент со сложностью O (n)
Вот мой пример:
Вы должны пойти в строку n/2. И начать сравнивать, например, вы ищете 100, а первое число, которое вы видите, равно 110, чтобы вы знали это либо в этой строке, либо в строках выше, теперь вы идете n/4 и так на.
Из комментариев
Разве это не O (n * log n)? У него есть разобрать все строки, которые он достигает двоичного поиска, поэтому число линейных поисков умноженное на количество строк, которые он придется сканировать в среднем. - Мартин Матисяк 5 минут назад.
Я не уверен, что это правильное решение. У кого-нибудь есть что-то лучше