【LeetCode】599. 兩個列表的最小索引總和
阿新 • • 發佈:2018-12-20
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;
}