我需要存储n个整数的排列,并且能够在有效时间内计算值的排列和逆运算。
即,我需要以这样的方式存储值[0 ... n-1]的重新排序,我可以询问位置(i)和值(j)(0 <= i,j&lt; = n)。
举一个例子 - 假设我们有以下值的排列:
我需要以下操作:
我知道C ++中的库,例如:https://github.com/fclaude/libcds2
Java中是否有任何允许这样做的结构或库,并且在空间和时间上都很有效?
答案 0 :(得分:1)
如果没有重复项,List
界面将满足您的需求。
它提供了以下方法:
List#get(index)
返回索引为index
List#indexOf(element)
返回遇到的第一个element