问题描述
- 给定两个列表 A和B,并且B是A的变位(即B是由 A 中的元素随机排列后组成的新列表)。我们希望找出一个从A到B的索引映射P。一个映射 P[i] = j 指的是列表 A 中的第 i 个元素出现于列表 B 中的第 j 个元素上。列表A和B可能出现重复元素。如果有多于一种答案,输出任意一种。
- 输入:A = [12, 28, 46, 32, 50] B = [50, 12, 32, 46, 28]
- 输出:[1, 4, 3, 2, 0]
解题思路
- 使用一个双重循环就能解决这个问题。外层循环使用变量i来遍历数组A,内层循环使用变量j来遍历数组B。若A[i] == B[j],则P[i] = j;
Java代码
public int[] anagramMappings(int[] A, int[] B) {
int res[] = new int[A.length];
for(int i=0; i<A.length;i++){
for(int j=0; j<B.length;j++){
if(A[i] == B[j]){
res[i] = j;
}
}
}
return res;
}
Python 代码
def anagramMappings(A, B):
res = [0]*len(A)
for i in range(len(A)):
for j in range(len(B)):
if(A[i] == B[j]):
res[i] = j
return res