当前位置: 首页 > 知识库问答 >
问题:

给定经理和员工在

郎志
2023-03-14

我在一次采访中被问到:

给定下属和经理,构造一个数据结构(或使用现有的数据结构),然后实现方法CountReport(雇员ID),以便它打印总的直接和间接报告。

我告诉我,我将通过构建一个图来解决它,然后计算每个顶点的in度,我告诉它时间复杂度为O(ve)。然后我被要求用计算机解决这个问题

/** 

subordinate, manager
A, C
B, C
C, F
D, E
E, F
F, F

countReports(employeeId) -> num // sum of direct and indirect reports for employee with id=employeeId

eg. 

A -> 0
C -> 2 // A, B
F -> 6 // C, E, F, A, B, D

Ask:
 * implement countReports
 
*/

共有1个答案

马坚白
2023-03-14

根据你的描述,第一个结构出现在我的脑海中:

Map<String,List<String>> mapEmployee = new HashMap<String,List<String>>();

Map<String,Set<String>> mapEmployee = new HashMap<String,Set<String>>();

第一个循环,我们迭代输入列表并构建上述数据结构。复杂性:O(N)。

然后我们可以通过employeeId快速访问结果,复杂性:O(1)。

List<String> subordinates = mapEmployee.get(employee); O(1)
int result = subordinates.count(); // O(1)

注:添加多个下属时,使用LinkedList可能会加快速度。

 类似资料:
  • 我们有一个emp表,其中包含empno、ename、job、mgr、hiredate、sal、comm、deptno列 我试过了 我的输出是每个值为1的经理的姓名我们如何输出员工最多的经理的姓名?

  • 进入员工页面,点击上方“邀请员工”按钮。 邮箱邀请 •点击“新建邀请链接”,输入邀请名称,选择“通过企业邮箱验证”。并为邀请员工设置部门、常驻城市信息 • 同一个邀请支持多个企业邮箱,通过邮箱邀请加入的员工无须审核。 二维码&链接邀请(PC、手机端均适用) •点击“新建邀请链接”,输入邀请名称,选择“管理员人工审核”。并为邀请员工设置部门、常驻城市信息。员工接受邀请后,需经您审核,通过后方可正式加

  • 管理员可采取逐条新增和批量新增两种方式进行操作。 逐条新增 进入员工页面,点击上方“新增员工”按钮。 •输入员工个人信息 按照指示输入员工信息,其中标注红色*号为必填信息(姓名、手机号、部门)。输入完毕后点击保存。 注:若您尚未创建部门,您可以将员工直接放置在公司下。 •为员工分配用车制度 选择是否允许员工使用企业支付,为其分配用车制度,选择是否需要其填写用车制度以及设置用车限额。设置完毕后点击保

  • 我试图用SQL编写一个查询,从同一个“employee”表中返回员工的姓和经理的姓。每个员工都有一个employeeid和一个“reportsto”列,其中包含其经理的employeeid。 这是我目前为止返回第一部分的内容(员工的姓和报告对象的id) 这个返回 我不知道如何将“reports”取下来,抓取它对应的employeeid,然后添加经理员工的姓,并将其添加到同一个记录中。 所以表应该是

  • 问题内容: 您好,我有一个员工表,其中包含以下列 我正在尝试创建一个将列出的视图 (通过交叉连接Employee表)。我尝试了外部联接,内部联接等,但无法正确完成。 任何帮助都将受到高度赞赏。 问题答案: 编辑 :如果emp_mgr_id为null,则左联接将起作用。

  • 本文向大家介绍使用Python在给定时间内工作的程序员数量,包括了使用Python在给定时间内工作的程序员数量的使用技巧和注意事项,需要的朋友参考一下 假设我们有间隔列表和另一个输入时间。在每个时间间隔中,结构都是[start,end],它表示程序员工作的时间。我们必须找到当时正在工作的程序员数量。 因此,如果输入像interval = [[2,6],[4,10],[5,9],[11,14]],t