760. Find Anagram Mappings

Given two listsAandB, andBis an anagram ofA.Bis an anagram ofAmeansBis made by randomizing the order of the elements inA.

We want to find anindex mappingP, fromAtoB. A mappingP[i] = jmeans theith element inAappears inBat indexj.

These listsAandBmay contain duplicates. If there are multiple answers, output any of them.

For example, given

A = [12, 28, 46, 32, 50]
B = [50, 12, 32, 46, 28]

We should return

[1, 4, 3, 2, 0]

as

P[0] = 1

because the

0

th element of

A

appears at

B[1]

, and

P[1] = 4

because the

1

st element of

A

appears at

B[4]

, and so on.

Note:

  1. A, B have equal lengths in range [1, 100] .
  2. A[i], B[i] are integers in range [0, 10^5] .
class Solution {
    public int[] anagramMappings(int[] A, int[] B) {
        if (A == null || B == null) return new int[0];

        Map<Integer, List<Integer>> hash = new HashMap<>();

        for (int i = 0; i < B.length; i++){
            if (hash.containsKey(B[i])){
                hash.get(B[i]).add(i);
            }
            else{
                List<Integer> temp = new ArrayList<>();
                temp.add(i);
                hash.put(B[i], temp);
            }
        }

        int[] ans = new int[A.length];
        for (int i = 0; i < A.length; i++){
            List<Integer> l = hash.get(A[i]);
            ans[i] = l.get(0);
            l.remove(0);
        }

        return ans;
    }
}

results for ""

    No results matching ""