假设给定了一个可以占据整个整数空间的整数数组。但是,我想将其映射到固定范围。
例如: {1, 5, 38, 5, 2^32-1} ---> {1, 2, 3, 2, 4}
请注意重复的元素值“5”及其映射数组。与顺序无关。
除了分域树(分域树需要 1..N 的范围)之外,还有其他应用吗?
一种方法是,
int[] map( int[] a) {
int[] transArr = new int[a.length];
Map<Integer,Integer> posValueMap = new HashMap<Integer,Integer>();
for(int i= 0 ; i < a.length; i++) {
if(!posValueMap.contains(i))
posValueMap.put(a[i], i);
}
for(int i= 0 ; i < transArr.length; i++) {
transArr[i] = posValueMap.get(a[i]);
}
return transArr;
}
是否有更简单的方法来使用不同的算法或函数式编程构造来实现这一目标?
最佳答案
关于java - 整数域到定域映射数组的应用与实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34361037/