「 每日一练,快乐水题 」599. 两个列表的最小索引总和
生活随笔
收集整理的這篇文章主要介紹了
「 每日一练,快乐水题 」599. 两个列表的最小索引总和
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 🔴力扣原題:
- 🟠題目簡(jiǎn)述:
- 🟡解題思路:
- 🟢C++代碼:
- 🔵結(jié)果展示:
🔴力扣原題:
力扣鏈接:599. 兩個(gè)列表的最小索引總和
🟠題目簡(jiǎn)述:
假設(shè) Andy 和 Doris 想在晚餐時(shí)選擇一家餐廳,并且他們都有一個(gè)表示最喜愛(ài)餐廳的列表,每個(gè)餐廳的名字用字符串表示。
你需要幫助他們用最少的索引和找出他們共同喜愛(ài)的餐廳。 如果答案不止一個(gè),則輸出所有答案并且不考慮順序。 你可以假設(shè)答案總是存在。
🟡解題思路:
1.首先構(gòu)建2個(gè)map:1.用于兩個(gè)統(tǒng)計(jì)餐廳出現(xiàn)的字?jǐn)?shù)2.用于計(jì)算索引和;
2.根據(jù)上述兩個(gè)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;} };🔵結(jié)果展示:
總結(jié)
以上是生活随笔為你收集整理的「 每日一练,快乐水题 」599. 两个列表的最小索引总和的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 互联网日报 | 4月20日 星期二 |
- 下一篇: 2021年中国移动游戏行业深度洞察报告