- class Solution {
- public:
- vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) {
- unordered_map<string,int>index;
- for(int i=0;i<list1.size();i++)
- {
- index[list1[i]]=i;
- }
- vector<string> ret;
- int indexsum=INT_MAX;
- for(int i=0;i<list2.size();i++)
- {
- if(index.count(list2[i])>0)
- {
- int j=index[list2[i]];
- //如果该索引和比最小索引和小,则清空结果,将该餐厅加入结果中,该索引和作为最小索引和
- if(i+j<indexsum)
- {
- ret.clear();
- ret.push_back(list2[i]);
- indexsum=i+j;
- }
- //如果该索引和等于最小索引和,则直接将该餐厅加入结果中。
- else if(i+j==indexsum)
- {
- ret.push_back(list2[i]);
- }
- }
- }
- return ret;
- }
- };