給定兩個列表 Aand B,並且 B 是 A 的變位(即 B 是由 A 中的元素隨機排列後組成的新列表)。

給定兩個列表 Aand 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] 的整數。

class Solution {

    public int[] anagramMappings(int[] A, int[] B) {

        if(A== null || B== null) return A;

        int[] res = new int[A.length];

        for(int i=0;i<A.length;i++){

            res[i] = getIndex(B, A[i]);

        }

        return  res;

    }

 

    private int getIndex(int[] b, int a) {

        for(int i=0;i<b.length; i++){

            if(b[i] == a) return i;

        }

        return -1;

    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章