Java Leetcode每日一题:DFS

news/2024/9/13 23:17:24/ 标签: leetcode, 深度优先, 算法, java

        解法1:深度优先搜索(DFS)

        深度优先搜索的做法非常直观。根据给定的员工编号找到员工,从该员工开始遍历,对于每个员工,将其重要性加到总和中,然后对该员工的每个直系下属继续遍历,直到所有下属遍历完毕,此时的总和即为给定的员工及其所有下属的重要性之和。

        实现方面,由于给定的是员工编号,且每个员工的编号都不相同,因此可以使用哈希表存储每个员工编号和对应的员工,即可通过员工编号得到对应的员工。

        

java">package LeetcodeExercise120240826;import java.util.*;public class LeetcodeExercise1 {public static void main(String[] args) {// 需求:你有一个保存员工信息的数据结构,它包含了员工唯一的id,重要度和直系下属的id。// 给定一个员工数组employees,其中:// employees[i].id是第i个员工的ID。// employees[i].importance 是第i个员工的重要度。// employees[i].subordinates是第i名员工的直接下属的ID列表。// 给定一个整数id表示一个员工的ID,返回这个员工和他所有下属的重要度的总和。List<Integer> employee1List = new ArrayList<>();Collections.addAll(employee1List, 2,3);Employee employee1 = new Employee(1, 5, employee1List);List<Integer> employee2List = new ArrayList<>();Employee employee2 = new Employee(2, 3, employee2List);List<Integer> employee3List = new ArrayList<>();Employee employee3 = new Employee(3, 3, employee3List);List<Employee> employees = new ArrayList<>();Collections.addAll(employees, employee1, employee2, employee3);Solution solution = new Solution();int value = solution.getImportance(employees, 1);System.out.println(value);}
}class Solution {HashMap<Integer, Employee> hashMap = new HashMap<>();public int getImportance(List<Employee> employees, int id) {for (Employee employee : employees) {hashMap.put(employee.id, employee);}return dfs(id);}public int dfs(int id) {Employee employee = hashMap.get(id);// 通过员工id得到员工对象int total = employee.importance;for (int subordinate : employee.subordinates) {total += dfs(subordinate);}return total;}
}

        Employee类

java">package LeetcodeExercise120240826;import java.util.List;public class Employee {public int id;public int importance;public List<Integer> subordinates;public Employee(int id, int importance, List<Integer> subordinates) {this.id = id;this.importance = importance;this.subordinates = subordinates;}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getImportance() {return importance;}public void setImportance(int importance) {this.importance = importance;}public List<Integer> getSubordinates() {return subordinates;}public void setSubordinates(List<Integer> subordinates) {this.subordinates = subordinates;}
}


http://www.ppmy.cn/news/1516322.html

相关文章

一看就会的Mysql 集群技术

目录 一、Mysql介绍 1.1什么是MySQL 1.2MySQL的优势 1.3MySQL的常用语句 二、MySQL源码安装 三、实验练习 3.1MySQL部署 实验环境 实验步骤 1.创建用户&#xff0c;数据目录&#xff0c;更改权限 2.修改文件 3.初始化&#xff0c;会生成一个密码&#xff0c;将其保…

java 二级列表 stream流实现

效果&#xff1a; 表数据的样子 代码&#xff1a; public Result secondaryList() {List<MachineryType> machineryTypes machineryTypeMapper.selectList(new QueryWrapper<MachineryType>().orderByAsc("pid"));// 创建父子关系Map<Integer, Mach…

“Ruby宝石匣:解锁流行插件系统的奥秘“

标题&#xff1a;“Ruby宝石匣&#xff1a;解锁流行插件系统的奥秘” 引言 Ruby&#xff0c;作为一种灵活且富有表现力的编程语言&#xff0c;其强大的插件系统是其成功的关键因素之一。从RubyGems到各种Rails插件&#xff0c;Ruby的插件生态系统为开发者提供了丰富的资源和工…

Git学习笔记(最终篇)

文章目录 远程仓库一. 配置远程连接二. 添加远程仓库推送本地仓库内容到远程仓库 三. 推送步骤四. 远程库克隆五. 创建与合并分支1. 创建新分支2. 切换分支3. 创建并立即切换到该分支4. 合并分支 六. 处理冲突七. 分支管理策略八. bug分支九. 多人协作十. 推送分支十一. 抓取分…

【PHP入门教程】PHPStudy环境搭建+composer创建项目

文章目录 PHP 的历史PHP 的用途PHP 的特点和优势PHP 环境搭建环境准备安装window 安装CentOS / Ubuntu / Debian 安装 第一个Hello World使用Apache服务运行命令行运行代码 Composer安装 Composer&#xff1a;安装途中报错解决&#xff1a;初始化项目创建文件最终文件目录Compo…

【JVM】OOM与调优(一)

OOM与调优 方法区 import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method;public class MetaspaceOverFlowTest {/*** 模拟CGLIB向元空间写入数据*/public static void …

【计算机网络】socket网络编程 --- 实现一些简易UDP网络程序

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

Python-断点续传的方式下载GPM降水数据

下载GPM卫星降水数据 全球卫星降水计划 (GPM) 是一项国际卫星任务&#xff0c;由NASA和JAXA合作开展&#xff0c;利用多传感器多卫星多算法结合卫星网络和雨量计反演得到更高精度的降水数据&#xff0c;其能够提供全球范围基于微波的3h以内以及基于微波红外的半小时的雨雪数据…

Django 后端架构开发:文件云存储,从本地存储到腾讯COS桶集成

⭐ Django 后端架构开发&#xff1a;文件云存储&#xff0c;从本地存储到腾讯COS桶集成 目录 ☁️ 文件云存储 - 项目使用云存储&#x1f4bb; 文件云存储 - 项目中使用本地存储&#x1f4dd; 文件云存储 - 概述和创建项目&#x1f310; 腾讯COS桶 - 概述&#x1f4da; 腾讯CO…

C++系列-多态的基本语法

多态的基本语法 多态的含义静态多态动态多态 多态的底层原理多态中的final和overridefinaloverride: 多态的应用和优点计算器简单实现电脑组装的实现 《游山西村》 南宋陆游 莫笑农家腊酒浑&#xff0c;丰年留客足鸡豚。 山重水复疑无路&#xff0c;柳暗花明又一村。 箫鼓追…

XML 总结

XML 总结 XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。它由万维网联盟&#xff08;W3C&#xff09;在1998年定义&#xff0c;旨在提供一种标准化、结构化的方式来组织数据。XML的设计目标是既易于人类阅读&#xff0c;也易于机器解析。本文…

React.js如何使用Bootstrap

在 React.js 项目中使用 Bootstrap 有多种方法&#xff0c;主要包括直接引入 Bootstrap CSS 文件和使用 React Bootstrap 库。下面将详细介绍这两种方法。 方法一&#xff1a;直接引入 Bootstrap CSS 文件 这是最简单的方式&#xff0c;只需在项目中引入 Bootstrap 的 CSS 文…

HTTPS 通信时是对称加密还是非对称加密?

HTTPS通信中对称加密和非对称加密的使用 非对称加密&#xff1a;在SSL/TLS握手期间&#xff0c;用于安全地交换对称密钥&#xff08;Pre-Master Secret&#xff09;。客户端使用服务器的公钥加密对称密钥&#xff0c;服务器使用私钥解密。 对称加密&#xff1a;握手完成后&…

Python将Word文档转为PDF

Python办公之——PDF添加水印_python pdf添加水印-CSDN博客 掌握Python技巧&#xff1a;PDF文件的加密和水印处理-CSDN博客

Tomcat使用及负载均衡(最全源码安装及配置使用教程)

目录 一 Tomcat概述 1.1 Tomcat 简介 1.2 Tomcat 下载 二 Tomcat 单主机配置 2.1 Tomcat 环境配置 2.2 Tomcat 安装与添加系统启动 2.3 Tomcat 启动与停止 三 Tomcat 配置文件及反向代理 3.1 配置文件详解 3.2 反向代理实现Tomcat部署 四 Memcached安装 4.1 简介 …

Redis:Redis为什么快

文章目录 一、Redis为什么快二、Redis的单线程模型三、高效的数据结构1、跳表 四、内存的高效使用五、I/O多路复用机制六、网络优化 一、Redis为什么快 单机的Redis每秒可以支撑十几万的并发&#xff0c;相对于MySQL来说&#xff0c;性能是MySQL的十几倍。速度快主要有一下因素…

在IDEA中使用Git

在IntelliJ IDEA&#xff08;通常简称为IDEA&#xff09;中使用Git进行版本控制是一种高效且集成度高的做法。以下是在IDEA中使用 Git的详细步骤和说明&#xff1a;一、安装与配置Git 安装Git&#xff1a; 前往Git的官方网站下载并安装Git。 安装过程中&#xff0c;建议勾选“…

游戏app激励视频广告预加载位置,最大化广告收益

最近收到很多游戏类App开发者咨询激励视频广告&#xff0c;在帮助开发者分析产品的时候&#xff0c;特别是一些初级开发者的App产品&#xff0c;发现用户进入这些App&#xff0c;或者打开某个功能时就弹出激励视频广告&#xff0c;这样是违规的&#xff0c;并且用户看完广告也是…

python应用之内置hashlib库的哈希算法介绍

hashlib 是 Python 的一个内置模块&#xff0c;提供了像 SHA1, SHA256, MD5 等哈希算法。可以接受任意长度的字节数据作为输入&#xff0c;并输出一个固定长度的“哈希值”&#xff0c;通常用于校验数据的完整性。而且该算法是不可逆的&#xff0c;不能通过哈希值反算出原始数据…

【大数据】数据仓库的定义、数据模型及其建设与设计

1. 数据仓库 1.1 定义 数据仓库不是数据的简单堆积&#xff0c;而是从大量的事务型数据库中抽取数据&#xff0c;并将其清理、转换为新的存储格式,即为决策目标把数据聚合在一种特殊的格式中。公认的数据仓库之父 W.H. Inmon 将其定义为&#xff1a;“数据仓库是支持管理决策…