【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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章