当前位置: 首页 > news >正文

Java Leetcode每日一题:DFS

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

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

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

        

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类

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;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • react 的学习随记
  • CM工作室发展史 上
  • 谷歌登录的时候,要求在手机的通知点是,并按数字来验证身份,但是手机通知栏没有收到通知和数字,原因是什么,怎么办?
  • Deepin【2】:Deepin系统盘扩容
  • JavaScript 动画库
  • nodejs搭建代理服务器解决跨域问题
  • 嵌入式人工智能ESP32(6-多线程)
  • Python | Leetcode Python题解之第367题有效的完全平方数
  • 为什么互联网上要设立防火墙?WAF又是什么?
  • Unity实现棋盘方格
  • 如何快速建30个文件夹
  • 【给女朋友讲C++】C++的编译
  • [数据集][目标检测]停车场空位检测数据集VOC+YOLO格式7959张2类别
  • 【mysql】mysql的卸载和安装
  • 【区块链 + 智慧文旅】城商行旅游金融联盟:旅游金融联盟平台 | FISCO BCOS应用案例
  • 【Amaple教程】5. 插件
  • 【翻译】babel对TC39装饰器草案的实现
  • css系列之关于字体的事
  • HTML5新特性总结
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • java2019面试题北京
  • javascript 总结(常用工具类的封装)
  • Markdown 语法简单说明
  • miaov-React 最佳入门
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • SpiderData 2019年2月23日 DApp数据排行榜
  • vue 个人积累(使用工具,组件)
  • Vue 2.3、2.4 知识点小结
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 订阅Forge Viewer所有的事件
  • 缓存与缓冲
  • 使用Swoole加速Laravel(正式环境中)
  • 小程序开发之路(一)
  • 译有关态射的一切
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 阿里云服务器购买完整流程
  • 国内开源镜像站点
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • ### RabbitMQ五种工作模式:
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (3)(3.5) 遥测无线电区域条例
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (八)Flink Join 连接
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十八)SpringBoot之发送QQ邮件
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)linux下的时间函数使用
  • (转)关于多人操作数据的处理策略
  • ./configure、make、make install 命令