LeetCode算法题-Employee Importance(Java实现)

DeepSeek+Cline:开启自动化编程新纪元 随着 AI 技术不断进步,编程领域迎来效率变革。DeepSeek 与 Cline 的结合,成为自动化编程的强大工具。DeepSeek 凭借先进的自然语言处理能力,能精准理解编程需求;Cline 作为 VSCode 插件,可实现代码生成、调试、注释等功能的无缝衔接。本文详细阐述二者安装配置、实战操作流程,涵盖从基础代码生成到复杂项目开发的应用技巧,同时解答常见问题,帮助开发者快速掌握这对 “智能搭档”,提升编程效率,解锁自动化编程的无限可能。 阅读详情

这是悦乐书的第291次更新,第309篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第159题(顺位题号是690)。定义员工信息的数据结构,其中包括员工的唯一ID,他的重要性值以及他的直接下属ID。例如,员工1是员工2的领导者,员工2是员工3的领导者。他们的重要性值分别为15,10和5。然后,员工1具有[1,15,[2]]等数据结构,员工2具有[2,10,[3]],员工3具有[3,5,[]]。请注意,虽然员工3也是员工1的下属,但该关系不是直接的。现在,根据公司的员工信息和员工ID,您需要返回该员工及其所有下属的总重要性值。

输入:[[1,5,[2,3]],[2,3,[]],[3,3,[]]],1

输出:11

说明:员工1具有重要性值5,他有两个直接下属:员工2和员工3.他们都具有重要性值3.因此员工1的总重要性值是5 + 3 + 3 = 11。

注意:

  • 一名员工最多只有一名直接领导,但是可以有多名下属。

  • 最多员工人数不超过2000人。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

题目的意思是找到所给id员工的重要性以及所有下属员工重要性之和,如果其下属员工本身也有下属,也要算进去,也就是说该问题的子问题还是问题本身。因此我们可以使用递归的方法。

先找到当前id所在的员工信息和其下属员工的id集合,我们将其下属员工id放入HashSet中,然后再去遍历所有员工集合,如果HashSet中包含当前员工的id,就累加上其重要值,然后对其下属员工进行再处理,调用递归方法,最后返回sum。

/*
// Employee info
class Employee {
    // It's the unique id of each node;
    // unique id of this employee
    public int id;
    // the importance value of this employee
    public int importance;
    // the id of direct subordinates
    public List<Integer> subordinates;
};
*/
class Solution {
    public int getImportance(List<Employee> employees, int id) {
        return helper(employees, id);
    }

    public int helper(List<Employee> employees, int id){
        List<Integer> sub = null;
        int sum = 0;
        for (Employee em : employees) {
            if (em.id == id) {
                sub = em.subordinates;
                sum += em.importance;
                break;
            }
        }
        Set<Integer> set = new HashSet<Integer>();
        for (Integer num : sub) {
            set.add(num);   
        }
        for (Employee em : employees) {
            if (set.contains(em.id)) {
                sum += helper(employees, em.id);
            }
        }
        return sum;
    }
}

03 第二种解法

我们可以对第一种解法再优化下,依旧使用递归,但是使用HashMap对初始员工数据进行处理,以id为key,以员工信息为value。递归方法中,以id为参数,查找当前id在HashMap中对应的员工信息,定义一个sum变量,初始值为当前员工的重要性,遍历当前员工的下属员工id集合,调用递归方法本身,最后返回sum。

/*
// Employee info
class Employee {
    // It's the unique id of each node;
    // unique id of this employee
    public int id;
    // the importance value of this employee
    public int importance;
    // the id of direct subordinates
    public List<Integer> subordinates;
};
*/
class Solution {

    public Map<Integer, Employee> map ;
    public int getImportance(List<Employee> employees, int id) {
        map = new HashMap<Integer, Employee>();
        for (Employee em : employees) {
            map.put(em.id, em);
        }
        return helper(id);
    }

    public int helper(int id){
        Employee em = map.get(id);
        int sum = em.importance;
        for (Integer num : em.subordinates) {
            sum += helper(num);
        }
        return sum;
    }
}

04 第三种解法

我们也可以使用迭代的方式来处理,借助队列来实现,当然你也可以使用栈。依旧是将所有的员工信息遍历放入HashMap中,以id为key,以员工信息为value。然后创建一个队列,将参数id作为初始元素入队列,接着对队列中的数据进行处理,出队列,然后使用id在HashMap中查找对应的value,找到后,累加上其重要值,然后遍历该员工的下属,将下属的id加入到队列中去,一直循环处理,直到队列为空。最后返回sum。

/*
// Employee info
class Employee {
    // It's the unique id of each node;
    // unique id of this employee
    public int id;
    // the importance value of this employee
    public int importance;
    // the id of direct subordinates
    public List<Integer> subordinates;
};
*/
class Solution {

    public int getImportance(List<Employee> employees, int id) {
        Map<Integer, Employee> map = new HashMap<Integer, Employee>();
        for (Employee em : employees) {
            map.put(em.id, em);
        }
        int sum = 0;
        Queue<Integer> queue = new LinkedList<Integer>();
        queue.offer(id);
        while (!queue.isEmpty()) {
            int temp = queue.poll();
            Employee e = map.get(temp);
            sum += e.importance;
            for (Integer num : e.subordinates) {
                queue.offer(num);
            }
        }
        return sum;
    }
}

05 小结

算法专题目前已日更超过四个月,算法题文章159+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

姿态传感器/陀螺仪之SC7A20HTR是应用驱动程序设计 define SC7A20_CTRL1_PM_100HZ (0x5 << 4) // 正常模式,100Hz输出数据速率(ODR)// 用于存储6字节的原始数据(X_L, X_H, Y_L, Y_H, Z_L, Z_H)#define SC7A20_WHO_AM_I_VALUE 0x11 // 读取WHO_AM_I寄存器应该返回的值。// 但HAL_I2C_Mem_Read按顺序读,data[0]是X_L(低8位),data[1]是X_H(高8位)MX_I2C1_Init(); 阅读详情

相关推荐

信号完整性SI-PI

SI设计的主要难点在于需要综合信号的幅度、噪声、边沿、延时等影响信号质量的多种因素,并且这种因素常常相互依赖、互相影响,交叉在一起。1.1、信号过冲 (欠阻尼状态,可并联一个合适的电容):过冲会造成强烈的电磁干扰,另一方面会损伤后面的电路的输入及,甚至失效。信号完整性SI:是指电路系统中信号的质量,如果在要求的时间内,信号能不失真的从源端传输到接收端。优点:提供较慢的上升时间,减少反系量,产生更小的EMI,从而降低过冲,增加信号质量。导线之间的间距过小, 就会产生串扰,间距越小、串扰越大。

weixin_42304393的博客 4872

LeetCode精选算法100题,从入门到入赘

算法是程序员的内功,掌握算法不仅能帮助你在面试中过关斩将,赢取 Dream Offer,更能充分锻炼你的逻辑思维与底层能力

IT邦德 1万+

FCN---训练cityspaces

未经允许,不要随意转载! 最近想试试用FCN训练自己的数据集,想想标注是一件很费劲的事,于是就想到了用其他库里的数据,这里选用了cityspaces,默认已经配置好FCN. 1、下载cityspaces https://www.cityscapes-dataset.com/ 需要注册一个账号 cityspaces包含2...

wangyu088的专栏 2035

LeetCode算法题整理(200题左右)

Leetcode

qq_38253797的博客 1万+

cellchat安装

cellchat

m0_65188455的博客 5448

uni-app蓝牙MTU设置失效探因:从20字节限制到跨设备兼容性实战

本文深入探讨了uni-app蓝牙开发中MTU设置失效的常见问题,特别是20字节限制的成因及解决方案。通过分析设备兼容性、蓝牙协议栈特性和系统版本差异,提供了智能延迟策略、设备特征检测和渐进式MTU提升等实战方案,帮助开发者优化蓝牙数据传输效率。

weixin_29289821的博客 289

Leetcode(力扣)超高频题讲解(一)

高频题(一) 文章目录高频题(一)一、反转链表(206)1. 双指针迭代2. 递归二、无重复字符的最长字串(3)三、LRU缓存机制(146)1. 题目描述2. LRU算法的介绍3. 数据结构的选择4. 代码实现四、数组中的第k个最大元素(215)1. 快排变形2. 大顶堆五、K个一组翻转链表(25)六、两数之和(1)1. 一遍哈希表2. 两遍哈希表七、三数之和(15)八、环形链表II(142)1. 哈希表2. 快慢指针九、环形链表(141)1. 哈希表2. 快慢指针十、合并两个有序链表(21)1. 递归2.

立志成为一个前端、后端、测试全方位发展的程序员 2754

RK3588适配Ubuntu系统

RKsdk上支持buildroot以及Debian系统,但是Ubuntu需要自己移植,有很多公司都移植好了可以直接用,这里就总结记录一下我制作Ubuntu的过程。

m0_60805802的博客 5362

LeetCode算法热题100题目和思路

LeetCode-算法-热题100

qq_43217697的博客 3462

qtcreator使用远程服务器编译代码

我并没有找到很好的windows上可以用的rsync工具,最后是装了wsl来调用rsync同步到代码后,在用ssh调用linux命令来编译的。安装wsl安装ubuntu启动wsl然后把windows里的ssh文件证书和配置复制到wsl里同时config的key目录需要改一下,这样就可以登录服务器了然后在home目录创建build.sh进行远程编译。

习惯就好zz的专栏 1384

PyTorch生成式人工智能——VQ-VAE详解与实现

VQ-VAE (Vector Quantised-Variational AutoEncoder) 的核心思想就是将 VAE 的连续潜变量离散化。它通过学习一个码本 (Codebook) 来实现这一点,码本是一个包含有限个嵌入向量的字典。模型不是直接输出一个连续的潜在向量,而是从码本中找出与编码器输出最接近的嵌入向量来代替它。本节首先详细讲解 VQ-VAE 的技术原理,然后使用 PyTorch 从零开始实现 VQ-VAE 模型。

盼小辉丶的博客 3343

【LeetCode】算法题汇总_思路+代码注释

【代码】【LeetCode】算法题汇总。

yyj3900636的博客 1432

《QGIS快速入门与应用基础》293:色带调整与透明设置

详细讲解了QGIS中遥感影像色带调整与透明设置的核心技术,帮助用户将遥感成果从基础合成提升到专业出图标准。主要内容包括: 色带精细化调整: 多波段真/假彩色合成的优化技巧(Gamma校正、色彩平衡、色阶端点校准) 单波段栅格数据的伪彩色规范设置(行业标准色带选择与分类方法) 透明设置: 研究区黑边/白边的消除方法 多图层叠加时的透明融合技巧 特定地物的差异化半透明显示 实用建议: 提供行业标准参数模板和效果对比图 标注新手操作红线和常见问题排查 强调符合遥感行业规范的可视化要求。

LuckyHanMo的博客 362

【Leetcode】690. Employee Importance

题目地址: https://leetcode.com/problems/employee-importance/ 给定一个Employee类,成员变量包括其id,importance(两个变量都是整数),还有一个其下属的id列表。给定一个Employee的id,求其自己与其所有直接和间接下属的importance总和。 思路是DFS。直接用其自己的importance累加其下属的importance即可,下属的importance可以递归求解。代码如下: import java.util.HashMap;

数学、算法爱好者的博客 187

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

leetcode-690. Employee Importance

690. Employee Importance You are given a data structure of employee information, which includes the employee'sunique id, hisimportance valueand hisdirectsubordinates' id. For example, ...

anchouman0644的博客 222

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

[Java]LeetCode690. 员工的重要性 | Employee Importance

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/stren...

weixin_30607659的博客 190

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LeetCode Employee Importance

原题链接在这里:https://leetcode.com/problems/employee-importance/description/ 题目: You are given a data structure of employee information, which includes the employee'sunique id, hisimportance valueand h...

weixin_30624825的博客 84

[LeetCode] 690. Employee Importance

Description见https://leetcode.com/problems/employee-importance/description/我的代码(AC)/* // Employee info class Employee { // It's the unique id of each node; // unique id of this employee publ

云丫 372

[Leetcode从零开刷]690. Employee Importance

题目来源: leetcode: You are given a data structure of employee information, which includes the employee’s unique id, his importance value and his directsubordinates’ id. For example, employee 1 is the

legalhighhigh的博客 319

LeetCode-Employee Importance

LeetCode Java Employee Importance

坟头草一米七五 189

LeetCode 690. Employee Importance (职员的重要值)

You are given a data structure of employee information, which includes the employee'sunique id, hisimportance valueand hisdirectsubordinates' id. For example, employee 1 is the leader of employ...

weixin_30653023的博客 98

LeetCode - 690. Employee Importance

You are given a data structure of employee information, which includes the employee'sunique id, hisimportance valueand hisdirectsubordinates' id. For example, employee 1 is the leader of employee...

weixin_34248118的博客 98

LeetCode 690. Employee Importance题解

题目 题目链接 题目会会给出一系列的员工信息,包括员工id、员工重要度及其直接下属。我们将输入一个员工的id,然后得到他以及他所有下属的重要程度之和。这里需注意是所有下属,所以还需要找到下属的下属。 思路 这道题是一道bfs(广度优先遍历)的题目。 我们的目标首先是找到这个员工,这个用一个遍历就完成了。 然后,将其重要程度加入累加器中,然后进行查找其所有下属,并将下属们的重要度加入累加...

679

【leetcode每日刷题】【广度遍历】690. Employee Importance

You are given a data structure of employee information, which includes the employee'sunique id, hisimportance valueand hisdirectsubordinates' id. For example, employee 1 is the leader of employe...

菜菜鸟的博客 143

#力扣 LeetCode690. 员工的重要性 @FDDLC

题目描述: 690. 员工的重要性 - 力扣(LeetCode) (leetcode-cn.com) Java代码: /* // Definition for Employee. class Employee { public int id; public int importance; public List<Integer> subordinates; }; */ class Solution { HashMap<Integer,Empl.

LiuXingchang的博客 321
上一篇: LeetCode算法题-Longest Univalue Path(Java实现)
下一篇: LeetCode算法题-Binary Number with Alternating Bits(Java实现)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值