「 每日一练,快乐水题 」599. 两个列表的最小索引总和
生活随笔
收集整理的這篇文章主要介紹了
「 每日一练,快乐水题 」599. 两个列表的最小索引总和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 🔴力扣原題:
- 🟠題目簡述:
- 🟡解題思路:
- 🟢C++代碼:
- 🔵結果展示:
🔴力扣原題:
力扣鏈接:599. 兩個列表的最小索引總和
🟠題目簡述:
假設 Andy 和 Doris 想在晚餐時選擇一家餐廳,并且他們都有一個表示最喜愛餐廳的列表,每個餐廳的名字用字符串表示。
你需要幫助他們用最少的索引和找出他們共同喜愛的餐廳。 如果答案不止一個,則輸出所有答案并且不考慮順序。 你可以假設答案總是存在。
🟡解題思路:
1.首先構建2個map:1.用于兩個統計餐廳出現的字數2.用于計算索引和;
2.根據上述兩個map得出相同的餐廳的索引和,插入map;
3.遍歷得出索引和最小的即可。
🟢C++代碼:
class Solution { public:vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) {int n1 = list1.size();int n2 = list2.size();unordered_map<string, int> umap1;unordered_map<string, int> umap2;for(int i = 0;i < n1; i++){++umap1[list1[i]];umap2[list1[i]] += i;}for(int j = 0;j < n2; j++){++umap1[list2[j]];umap2[list2[j]] += j;}unordered_map<string,int> umap3;for(auto it = umap1.begin(); it != umap1.end(); it++){if(it->second > 1){auto it1 = umap2.find(it->first);umap3[it1->first] = it1->second;}}vector<string> ret;int nMin = n1 + n2;for(auto it = umap3.begin(); it != umap3.end(); it++){cout << it->first << " " << it->second << endl;nMin = min(nMin, it->second);}for(auto it = umap3.begin(); it != umap3.end(); it++){if(nMin == it->second){ret.push_back(it->first);}}return ret;} };🔵結果展示:
總結
以上是生活随笔為你收集整理的「 每日一练,快乐水题 」599. 两个列表的最小索引总和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网日报 | 4月20日 星期二 |
- 下一篇: 2021年中国移动游戏行业深度洞察报告