недавно я столкнулась с проблемой программирования, которая выглядит следующим образом:найти минимальный элемент в массиве, который сортируется и вращали
отсортированный массив задается и массив вращается в какой-то неизвестной точке, я должен найти минимальный элемент в нем. Массив также может содержать дубликаты.
Для например:
Input: {5, 6, 1, 2, 3, 4}
Output: 1
Input: {2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 2}
Output: 0
Я последовал за простое решение пройти корыта полный массив и найти минимум. Это решение требует времени O (n). Я понимаю тот факт, что минимальным элементом является тот, чей предыдущий элемент больше его. Если такого элемента нет, тогда нет вращения, и первым элементом будет минимальный.
Но меня попросили решение O (Logn). Есть ли способ решить проблему в O (Logn)?
бинарного поиск является решением для 'O (журнал N)', вы просто должны добавить дополнительные условия для вращения. –
Вы можете проверить эту ссылку http://www.geeksforgeeks.org/find-minimum-element-in-a-sorted-and-rotated-array/ – vikiiii
Был вопрос о моей первой работе из колледжа. Интервьюер назвал его «T-отсортированным массивом», но я не знаю, насколько распространен этот термин ... –