zoukankan      html  css  js  c++  java
  • Email List

    题目:给几个Email的list,输出全部list的交集(在全部list中都出现过的email)。

    思路:用set记录前i个list中都含有的email,当进行第i+1时,检查每个email是否在该set中存在,若存在,则说明该email在前i+1个list中都有,则将它记录到另一个set中。整个算法运行过程中,我们可以滚动地利用这两个set。

    时间复杂度O(n)。n是全部list中出现的email个数。

     1     vector<string> EmailList(vector<vector<string> >& email)
     2     {
     3         vector<string> res;
     4         if (email.size() == 0) return res;
     5         unordered_set<string> dict[2];
     6         for (int i = 0, n = email.size(); i < n; i++)
     7         {
     8             dict[i % 2].clear();
     9             for (int j = 0, len = email[i].size(); j < len; j++)
    10             {
    11                 if (!i || dict[(i + 1) % 2].count(email[i][j]))
    12                     dict[i % 2].insert(email[i][j]);
    13             }
    14         }
    15         for (auto i : dict[(email.size() - 1) % 2])
    16             res.push_back(i);
    17         return res;
    18     }
  • 相关阅读:
    前端页面的防抖与节流
    vue3.0 响应式原理
    cssBEM命名规范及常用CSS class 命名
    vue2.x 响应式原理
    npm 相关命令
    Node之 fs
    Node 之 Buffer
    Node之path
    Node之process
    Node.js 如何处理 ES6 模块
  • 原文地址:https://www.cnblogs.com/fenshen371/p/5170604.html
Copyright © 2011-2022 走看看