- 主题:这个算法怎么设计?
有多个公司,每个公司有多个组,每个公司的每个职员属于且仅属于公司的某个组。
现在知道一个职员的 名字 ,怎么快速地找出得到他所在组的全部成员。
我简单设计了一个觉得太麻烦了。
std::map<int64_t, std::map<int64_t, std::set<std::string>> groupMembers;
首先根据 companyId 找到这个公司的所有组,再遍历所有组,对每个组成员所在的set进行 find, 找到了就返回整个 set。
有更优雅高效的解决方案吗?
--
修改:speedboy2998 FROM 113.246.63.*
FROM 218.76.62.*
ID 包含组名,比如 hgoldfish 和 speedboy2998 的 ID 带上组:
nowhere.dev.hgoldfish
nowhere.dev.speedboy2998
放到 multimap 里面,找到某个 const_iterator 以后,再往前或者往后搜索,找到其它同部门的。
edit: 发现你是用 int64_t,那可以分成两部分,高位是组,低位是 staff id
【 在 speedboy2998 (极品飞车) 的大作中提到: 】
: 有多个公司,每个公司有多个组,每个公司的每个职员属于且仅属于公司的某个组。
: 现在知道一个职员的ID,怎么快速地找出得到他所在组的全部成员。
: 我简单设计了一个觉得太麻烦了。
: ...................
--
修改:hgoldfish FROM 124.72.119.*
FROM 124.72.119.*
struct info{
Int corp;
Int team;
};
map<int, info> member;
map<info, vector<int>> teams;
【 在 speedboy2998 的大作中提到: 】
: 有多个公司,每个公司有多个组,每个公司的每个职员属于且仅属于公司的某个组。
: 现在知道一个职员的ID,怎么快速地找出得到他所在组的全部成员。
:
: 我简单设计了一个觉得太麻烦了。
:
: std::map<int64\_t, std::map<int64\_t, std::s
: ..................
发自「今日水木 on M2007J17C」
--
FROM 36.143.59.*
无非遍历或者 缓存嘛~
既然是公司, 这点数据量 都不是事.
【 在 speedboy2998 的大作中提到: 】
: 有多个公司,每个公司有多个组,每个公司的每个职员属于且仅属于公司的某个组。
: 现在知道一个职员的ID,怎么快速地找出得到他所在组的全部成员。
:
: ...................
--
FROM 49.7.47.*
为什么不可以直接简历一个 struct 直接包含 compnayid 和groupid?
然后根据comid, gid, 直接缓存所有的 userid>?
--
FROM 49.7.47.*
SAAS 平台,可能几十万个公司。几百万上千万职员。
【 在 lixunhuansk 的大作中提到: 】
: 无非遍历或者 缓存嘛~
: 既然是公司, 这点数据量 都不是事.
:
--
FROM 113.246.63.*
这里的ID我写错了,ID是字符串,不同的公司可能相同,可以理解为名字
【 在 hgoldfish 的大作中提到: 】
: ID 包含组名,比如 hgoldfish 和 speedboy2998 的 ID 带上组:
: nowhere.dev.hgoldfish
: nowhere.dev.speedboy2998
: ...................
--
FROM 113.246.63.*
嗯,这个方案可以,就是空间占用比较多。
【 在 GoGoRoger 的大作中提到: 】
: struct info{
: Int corp;
: Int team;
: ...................
--
修改:speedboy2998 FROM 113.246.63.*
FROM 113.246.63.*
那用数据库啊
【 在 speedboy2998 的大作中提到: 】
: SAAS 平台,可能几十万个公司。几百万上千万职员。
:
--
FROM 111.197.234.*
leetcode medium
【 在 speedboy2998 的大作中提到: 】
: 有多个公司,每个公司有多个组,每个公司的每个职员属于且仅属于公司的某个组。
: 现在知道一个职员的 名字 ,怎么快速地找出得到他所在组的全部成员。
:
: ...................
--
FROM 158.140.1.*