【LeetCode】690. Employee Importance 解题报告(Python)
作者: 负雪明烛
 id: fuxuemingzhu
 个人博客: http://fuxuemingzhu.cn/
题目地址:https://leetcode.com/problems/employee-importance/description/
题目描述
You are given a data structure of employee information, which includes the employee’s unique id, his importance value and his direct subordinates’ id.
For example, employee 1 is the leader of employee 2, and employee 2 is the leader of employee 3. They have importance value 15, 10 and 5, respectively. Then employee 1 has a data structure like [1, 15, [2]], and employee 2 has [2, 10, [3]], and employee 3 has [3, 5, []]. Note that although employee 3 is also a subordinate of employee 1, the relationship is not direct.
Now given the employee information of a company, and an employee id, you need to return the total importance value of this employee and all his subordinates.
Example 1:
Input: [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1
Output: 11
Explanation:
Employee 1 has importance value 5, and he has two direct subordinates: employee 2 and employee 3. They both have importance value 3. So the total importance value of employee 1 is 5 + 3 + 3 = 11.
Note:
- One employee has at most one direct leader and may have several subordinates.
- The maximum number of employees won’t exceed 2000.
题目大意
给的数据结构是[1, 5, [2, 3]]表示的是1号员工的重要性是5,有两个下属2和3。
输入一个员工的Id,求它自己和它所有的下属的重要性之和。
解题方法
方法一:DFS
题目意思是找出每个节点与其子节点的所有重要性之和。
为了快速查询每个节点的id与其对应,建立了map。
然后采用dfs遍历。当某个子节点不再有子节点的时候会自动终止该分支的遍历。
我觉得这个题应该背下来。
"""
# Employee info
class Employee(object):
    def __init__(self, id, importance, subordinates):
        # It's the unique id of each node.
        # unique id of this employee
        self.id = id
        # the importance value of this employee
        self.importance = importance
        # the id of direct subordinates
        self.subordinates = subordinates
"""
class Solution(object):
    def getImportance(self, employees, id):
        """
        :type employees: Employee
        :type id: int
        :rtype: int
        """
        employee_dict = {employee.id : employee for employee in employees}
        def dfs(id):
            return employee_dict[id].importance + sum(dfs(id) for id in employee_dict[id].subordinates)
        return dfs(id)
二刷,换了一个写法,没有新定义dfs,而是直接使用了题目给的函数。效率竟然提高了不少。
"""
# Employee info
class Employee:
    def __init__(self, id, importance, subordinates):
        # It's the unique id of each node.
        # unique id of this employee
        self.id = id
        # the importance value of this employee
        self.importance = importance
        # the id of direct subordinates
        self.subordinates = subordinates
"""
class Solution:
    def getImportance(self, employees, id):
        """
        :type employees: Employee
        :type id: int
        :rtype: int
        """
        emap = {employee.id : employee for employee in employees}
        res = emap[id].importance
        for sub in emap[id].subordinates:
            res += self.getImportance(employees, sub)
        return res
日期
2018 年 1 月 17 日
 2018 年 11 月 10 日 —— 这么快就到双十一了??
【LeetCode】690. Employee Importance 解题报告(Python)的更多相关文章
- LeetCode 690 Employee Importance 解题报告
		题目要求 You are given a data structure of employee information, which includes the employee's unique id ... 
- (BFS) leetcode 690. Employee Importance
		690. Employee Importance Easy 377369FavoriteShare You are given a data structure of employee informa ... 
- LN : leetcode 690  Employee Importance
		lc 690 Employee Importance 690 Employee Importance You are given a data structure of employee inform ... 
- LeetCode 690. Employee Importance (职员的重要值)
		You are given a data structure of employee information, which includes the employee's unique id, his ... 
- LeetCode - 690. Employee Importance
		You are given a data structure of employee information, which includes the employee's unique id, his ... 
- leetcode 690. Employee Importance——本质上就是tree的DFS和BFS
		You are given a data structure of employee information, which includes the employee's unique id, his ... 
- [LeetCode]690. Employee Importance员工重要信息
		哈希表存id和员工数据结构 递归获取信息 public int getImportance(List<Employee> employees, int id) { Map<Integ ... 
- 【LeetCode】120. Triangle 解题报告(Python)
		[LeetCode]120. Triangle 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址htt ... 
- 690. Employee Importance - LeetCode
		Question 690. Employee Importance Example 1: Input: [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1 Outp ... 
随机推荐
- R语言与医学统计图形-【13】ggplot2几何对象之盒形图
			ggplot2绘图系统--几何对象之盒形图 参数: geom_boxplot(mapping = , #lower,middle,upper,x,ymax,ymin必须(有默认) #alpha/col ... 
- dlang 读取gz压缩文件
			没找到打开gz压缩文件的标准库,暂时调用系统命令打开gz压缩文件(参考:https://dlang.org/phobos/std_process.html#.Redirect.stdoutToStde ... 
- ChromeDriver的安装和使用
			用于驱动Chrome浏览器,适用于有界面的操作系统. 一.安装ChromeDriver 要先安装Chrome浏览器,然后安装ChromeDriver. 官方网站:https://sites.googl ... 
- python2 第二天
			requests库 编码和解码 输入和输出,在Python中,为了更好的调试和输出,我们需要对字符串进⾏格式化的输出,⽐如我们定义了姓名和年龄,但是我 们需要输出完整的信息,那么就涉及到字符串格式化的 ... 
- SimpleNVR如何把安防监控画面推流到微信公众号直播
			背景需求 进入移动互联网时代以来,微信已成为许多企业除官网以外必备的宣传渠道,当3.2亿直播用户与九亿微信用户的势能增加,在微信上开启直播已成为越来越多企业的不二选择. 需求分析 微信公众号作为平台来 ... 
- Yarn 公平调度器案例
			目录 公平调度器案例 需求 配置多队列的公平调度器 1 修改yarn-site.xml文件,加入以下从参数 2 配置fair-scheduler.xml 3 分发配置文件重启yarn 4 测试提交任务 ... 
- Slay 全场!Erda 首次亮相 GopherChina 大会
			来源|尔达 Erda 公众号 相关视频:https://www.bilibili.com/video/BV1MV411x7Gm 2021 年 6 月 26 日,GopherChina 大会准时亮相北京 ... 
- a这个词根
			a是个词根,有三种意思:1. 以某种状态或方式,如: ablaze, afire, aflame, alight, aloud, alive, afloat等2. at, in, on, to sth ... 
- act
			act的词源是do, 干着或干了的事情也可以叫act.抄全字典的话,抄的和看的都麻烦,在阅读中体会吧. act和action有啥区别?action: doing sth; act: n. action ... 
- Vue中加载百度地图
			借助百度地图的 LocalSearch 和 Autocomplete 两个方法 实现方式:通过promise以及百度地图的callback回调函数 map.js 1 export function M ... 
