Ну, наверное, есть какой-то трюк (обычно есть).Но вы можете сортировать список (O(nlogn)
).Тогда нужно просто найти число, совпадающее со следующим (линейный поиск - O(n)
).Конечно, вам придется сортировать его как кортежи значений и исходных индексов, чтобы вы могли вернуть искомый индекс.Но дело в том, что верхняя граница алгоритма, который будет выполнять эту работу, должна быть O(nlogn)
.
Если вы просто проходите список по очереди, вы можете взять каждый индекс, а затем выполнить поиск по остальной частисписок после него для соответствующего индекса.Я думаю, что это примерно эквивалентно работе, проделанной в виде пузырьков, поэтому, вероятно, это будет O(n^2)
, но просто.
Я действительно ненавижу хитрые вопросы как вопросы интервью.Они вроде оптических иллюзий: либо ты это видишь, либо нет, но на самом деле ничего плохого о тебе не скажешь, если не увидишь трюк.