Дан массив с n элементами. Первые m элементов в массиве отсортированы (без дубликатов) и отличаются от нуля. Остальная часть массива - нули.
Следует отметить, что m неизвестно - это может быть что угодно, но известно, что n >> m .
Теперь, учитывая x; если он существует в массиве, я должен вернуть его индекс, в противном случае он не существует. Теперь дело в том, что Я должен найти алгоритм, который делает это .
. Тривиальным ответом будет сканирование массива до тех пор, пока следующий элемент не равен нулю, с O (m ) временная сложность, или просто модифицированная версия «Бинарного поиска», которая потребует O (logn) временной сложности. Помимо этих двух решений - я понятия не имею. Намекнули, что мы можем найти x в O (log m) сложности времени, найдя m в O (logm) времени Тогда я мог бы выполнить бинарный поиск по первым m элементам ... но в противном случае я понятия не имею!