1. 程式人生 > >【LeetCode】599. 兩個列表的最小索引總和

【LeetCode】599. 兩個列表的最小索引總和

1.題目

假設Andy和Doris想在晚餐時選擇一家餐廳,並且他們都有一個表示最喜愛餐廳的列表,每個餐廳的名字用字串表示。

你需要幫助他們用最少的索引和找出他們共同喜愛的餐廳。 如果答案不止一個,則輸出所有答案並且不考慮順序。 你可以假設總是存在一個答案。
點選跳轉原文

2.思路

把list1的元素和索引放入map中;
在lsit2中尋找map中存在的元素;
計算索引之和並進行比較,

3.程式碼

vector<string> findRestaurant(vector<string>& list1, vector<string>& list2)
{ int l1=list1.size(),l2=list2.size(); map<string,int>mp; vector<string>res; int minVal=10000; for(int i=0;i<l1;i++){ mp.insert(pair<string,int>(list1[i],i));//把list1的元素和索引放入map中 } for(int i=0;i<l2;i++){ if(mp.find(list2[i])!=mp.end()){//在map中找到list2中的元素,比較索引之和的大小 if(mp[
list2[i]]+i<minVal){ minVal=mp[list2[i]]+i; res.clear(); res.push_back(list2[i]); } else if(mp[list2[i]]+i==minVal){ res.push_back(list2[i]); } } } return res; }