Leetcode 599 Minimum Index Sum of Two Lists
class Solution {
public:
vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) {
unordered_map<string,int> nameAndOrder;
for(int i = 0;i < list1.size();i ++)
{
nameAndOrder[list1[i]] = i;
}
unordered_map<int,vector<string>> result;
int minIndexSum = list1.size() + list2.size();
for(int j = 0;j < list2.size();j ++)
{
auto commonName = nameAndOrder.find(list2[j]);
if(commonName != nameAndOrder.end())
{
int indexSum = commonName->second + j;
if(indexSum <= minIndexSum)
{
minIndexSum = indexSum;
result[minIndexSum].push_back(list2[j]);
}
}
}
return result[minIndexSum];
}
};