程式語言 - LeetCode - C++ - 599. Minimum Index Sum of Two Lists



題目:


解答:

class Solution {
public:
    vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) {
        unordered_map<string, int> mp1;
        unordered_map<string, int> mp2;

        for (int i = 0; i < list1.size(); ++i) {
            mp1[list1[i]] = i;
        }

        for (int i = 0; i < list2.size(); ++i) {
            mp2[list2[i]] = i;
        }

        int pos = INT_MAX;

        for (auto& [k, v] : mp1) {
            if (mp2.count(k)) {
                pos = min(pos, v + mp2[k]);
            }
        }

        vector<string> ans;
        
        for (auto& [k, v] : mp1) {
            if (mp2.count(k) && v + mp2[k] == pos) {
                ans.push_back(k);
            }
        }

        return ans;
    }
};