力扣760. 找出變位對映 C++

ganlanA發表於2020-10-02

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

C++

//Hash map
class Solution {
public:
    vector<int> anagramMappings(vector<int>& A, vector<int>& B) {
        unordered_map<int, int> m;
        for(int i = 0; i < B.size(); i++){
            m[B[i]] = i;
        }
        vector<int> res;
        for(const auto& a : A){
            res.push_back(m[a]);
        }
        return res;
    }
};

相關文章