【发布时间】:2010-05-04 19:05:52
【问题描述】:
好的,这是我的问题:
我正在用 Java 实现一个算法,其中一部分将如下: 问题是如何以有效的方式做我现在将要解释的事情。
给定: 长度为 n 的数组 a 整数数组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 数组会有所帮助。但我不确定这是否是最好的方法。
【问题讨论】:
-
反转排列操作是什么意思?