class Solution {
public:
vector<int> anagramMappings(vector<int>& nums1, vector<int>& nums2) {
}
};
760. 找出变位映射
给定两个列表 A
and 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]
P[0] = 1
,因为 A
中的第 0
个元素出现于 B[1]
,而且 P[1] = 4
因为 A
中第 1
个元素出现于 B[4]
,以此类推。
注:
A, B
有相同的长度,范围为 [1, 100]
。A[i], B[i]
都是范围在 [0, 10^5]
的整数。
原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 2.1 MB, 提交时间: 2023-10-15 17:46:16
func anagramMappings(A []int, B []int) []int { m := map[int]int{} for i, n := range B { m[n] = i } out := make([]int, len(A)) for i, n := range A { out[i] = m[n] } return out }
java 解法, 执行用时: 0 ms, 内存消耗: 40.1 MB, 提交时间: 2023-10-15 17:45:49
class Solution { public int[] anagramMappings(int[] A, int[] B) { Map<Integer, Integer> D = new HashMap(); for (int i = 0; i < B.length; ++i) D.put(B[i], i); int[] ans = new int[A.length]; int t = 0; for (int x: A) ans[t++] = D.get(x); return ans; } }
python3 解法, 执行用时: 44 ms, 内存消耗: 16 MB, 提交时间: 2023-10-15 17:45:38
class Solution: def anagramMappings(self, nums1: List[int], nums2: List[int]) -> List[int]: D = {x: i for i, x in enumerate(nums2)} return [D[x] for x in nums1]