Мне задали этот вопрос в интервью сегодня. Я попробовал решение, но хотел бы знать, если есть лучший способ решить эту проблему:Алгоритм списка массивов - Интервью
Вопрос: У меня есть ArrayList сказать 500000 элементов таким образом, что значение каждого элемента ArrayList такое же, как индекс , Например: list.get (0) = 0; list.get (1) = 1 ... и т. д. Но только один элемент не синхронизирован с этим упорядочением [i.e list.get (i)! = I]. Как вы находите этот элемент.
Мой ответ: Итерируйте по списку, используя несколько потоков, каждый поток, обрабатывающий определенное сращивание арраиста каждый раз, сравнивая list.get (i) с i. Когда элемент найден, установите некоторую логическую переменную, чтобы указать другим потокам, что элемент был найден.
Есть ли способ решить эту проблему без повторения списка? Или лучший способ?
Без каких-либо намеков о том, где этот номер может быть в списке, вопрос носит скучный характер. – keyser
Я думаю, вам нужно объяснить, что «только один элемент не синхронизирован» на самом деле означает ... это не имеет смысла. См. Мой ответ ниже. Я думаю, что если вы переместите один элемент, все остальные элементы будут не синхронизированы, нет? – duedl0r
@ dued0r элемент не удаляется.Интервьюер спросил, как определить элемент, значение которого не совпадает с индексом. – sachinrahulsourav