760. Find Anagram Mappings

Given two lists Aand B, and B is an anagram of A. B is an anagram of A means B is made by randomizing the order of the elements in A.

We want to find an index mappingP, from A to B. A mapping P[i] = j means the ith element in A appears in B at index j.

These lists A and B may 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] .

Solution

(1) Java



(2) Python

class Solution:
    def anagramMappings(self, A, B):
        """
        :type A: List[int]
        :type B: List[int]
        :rtype: List[int]
        """
        rst = []
        if not A or not B:
            return rst
        mb = {}
        for i, b in enumerate(B):
            if not b in mb:
                mb[b] = []
            mb[b].append(i)
        for a in A:
            sb = mb[a]
            rst.append(sb.pop())
        return rst

(3) Scala



results matching ""

    No results matching ""