美文网首页
leetcode 721 / lintcode 1070

leetcode 721 / lintcode 1070

作者: Ariana不会哭 | 来源:发表于2019-01-13 10:53 被阅读0次

    这个题吧,相当复杂,需要你熟练掌握C++容器。
    下面是乐乐自己总结的备忘录吧:以后有机会公布电子版的xmind:


    image.png

    单纯看代码有点累,而且我也是怎么也看不懂,还是放在VS 里面单步调试一点点分析:
    以下是实例与运行过程:


    image.png
    • code:
    //lintcode 1070
    
    //my
    vector<vector<string>> accountsMerge(vector<vector<string>>& accounts) {
        unordered_map<string, vector<int>> map;
        set<string> s;
        queue<int> q;
        int n = accounts.size();
        vector<int> visited(n, 0);
        vector<vector<string>> ans;
        for (int i = 0; i < n; i++) {
            for (int j = 1; j < accounts[i].size(); j++) {
                map[accounts[i][j]].push_back(i);
            }
        }
    
        for (int i = 0; i < n; i++) {
            if (visited[i] == 0) {
                q.push(i);
                s.clear();
                while (!q.empty()) {
                    int temp = q.front();
                    q.pop();
                    visited[temp] = 1;
                    vector<string> newmail(accounts[temp].begin() + 1, accounts[temp].end());
                    for (auto mm : newmail) {
                        s.insert(mm);
                        for (auto aa : map[mm]) {
                            if (visited[aa] == 0) {
                                q.push(aa);
                                visited[aa] = 1;
                            }
                        }
                    }
                }
                vector<string> out(s.begin(), s.end());
                out.insert(out.begin(), accounts[i][0]);
                ans.push_back(out);
            }
    
        }
        return ans;
    }
    

    相关文章

      网友评论

          本文标题:leetcode 721 / lintcode 1070

          本文链接:https://www.haomeiwen.com/subject/daykdqtx.html