У меня есть этот вопрос из интервью в Microsoft: Учитывая несортированный массив, найти максимальное вычитание между двумя элементами в массиве - это способ, которым:Учитывая несортированный массив, найдите максимальное вычитание между двумя элементами массива
(Index1, Index2) = arr[Index2] - arr[Index1]. Index1<Index2.
Пример:
given the array: [1, 5, 3, 2, 7, 9, 4, 3] -> Output: (1,9)=8.
given the array: [4, 9, 2, 3, 6, 3, 8, 1] -> Output: (2,8)=6.
наивное решение работает в O (N^2) раз: Сканирование первого индекса для вычитания со всеми другими индексами и сохранить максимальное значение, перейдите к следующему индексу и так далее.
Есть ли способ это оптимизировать?
Это не должно быть (мин, макс.), проверьте пример два. – StationaryTraveller
Итак, другое ограничение состоит в том, что 1 появляется как элемент 1 и 2 как элемент 2? – simonzack
Уточнено определение, Извините. – StationaryTraveller