Хорошо, вот моя проблема:
Я реализую алгоритм на Java, и его часть будет следующей:
Вопрос в том, как сделать то, что я сейчас объясню, эффективным способом.
Дано:
массив длины n
целочисленный массив perm, который является перестановкой [1..n]
теперь я хочу переставить массив a, используя порядок, определенный массивом perm,
т.е.
a = [a, b, c, d], perm = [2,3,4,1] ------> permutedA [b, c, d, a],
Я понял, что могу сделать это путем перебора массива с помощью: permutedA [i] = a [perm [i] -1], (-1, потому что индексы перестановки в perm начинаются с 1, а не с 0)
Теперь я хочу сделать некоторые операции с permutedA ...
А теперь я хочу сделать операцию перестановки в обратном порядке.
Это где я не уверен, как это сделать.
Обратите внимание, что элемент a может содержать элемент более одного раза, то есть a = [a, a, a, a]
Теперь я подумал, что использование Hashmap вместо массива perm поможет. Но я не уверен, что это лучший способ сделать это.