文章目录

  • 1. 题目
  • 2. 解题
    • 2.1 DFS
    • 2.2 BFS

1. 题目

给 n 个进程,每个进程都有一个独一无二的 PID (进程编号)和它的 PPID (父进程编号)。

每一个进程只有一个父进程,但是每个进程可能会有一个或者多个孩子进程。
它们形成的关系就像一个树状结构。
只有一个进程的 PPID 是 0 ,意味着这个进程没有父进程。
所有的 PID 都会是唯一的正整数。

我们用两个序列来表示这些进程,第一个序列包含所有进程的 PID ,第二个序列包含所有进程对应的 PPID。

现在给定这两个序列和一个 PID 表示你要杀死的进程,函数返回一个 PID 序列,表示因为杀这个进程而导致的所有被杀掉的进程的编号。

当一个进程被杀掉的时候,它所有的孩子进程和后代进程都要被杀掉。

你可以以任意顺序排列返回的 PID 序列。

示例 1:
输入:
pid =  [1, 3, 10, 5]
ppid = [3, 0, 5, 3]
kill = 5
输出: [5,10]
解释: 3/   \1     5/10
杀掉进程 5 ,同时它的后代进程 10 也被杀掉。注意:
被杀掉的进程编号一定在 PID 序列中。
n >= 1.

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kill-process
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 建图,遍历

2.1 DFS

class Solution {unordered_map<int, vector<int>> m;vector<int> ans;
public:vector<int> killProcess(vector<int>& pid, vector<int>& ppid, int kill) {int i, root = -1;for(i = 0; i < pid.size(); ++i){if(ppid[i])m[ppid[i]].push_back(pid[i]);}dfs(kill);return ans;}void dfs(int root){ans.push_back(root);for(int i = 0; i < m[root].size(); ++i)dfs(m[root][i]);}
};

276 ms 67.7 MB

2.2 BFS

class Solution {unordered_map<int, vector<int>> m;vector<int> ans;
public:vector<int> killProcess(vector<int>& pid, vector<int>& ppid, int kill) {int i, cur;for(i = 0; i < pid.size(); ++i){if(ppid[i])m[ppid[i]].push_back(pid[i]);}queue<int> q;q.push(kill);while(!q.empty()){cur = q.front();ans.push_back(cur);q.pop();for(int i = 0; i < m[cur].size(); ++i)q.push(m[cur][i]);}return ans;}
};

264 ms 65.3 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 582. 杀死进程(图的遍历)相关推荐

  1. 【LeetCode - 582】杀死进程

    文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解题思路   先把所有进程的子进程统计好存入一个 HashMap<Integer, List> 中,key 为进程编号 ...

  2. LeetCode 2157. 字符串分组(状态压缩+位运算+图的遍历)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的字符串数组 words . 每个字符串都只包含 小写英文字母 .words 中任意一个子串中,每个字母都至多只出现一次. 如果通 ...

  3. LeetCode 1971. Find if Path Exists in Graph(图的遍历)

    文章目录 1. 题目 2. 解题 1. 题目 There is a bi-directional graph with n vertices, where each vertex is labeled ...

  4. 奇安信集团笔试题:二叉树的最近公共祖先(leetcode236),杀死进程(leetcode582)...

    1. 二叉树最近公共祖先 奇安信集团 2020校招 服务端开发-应用开发方向在线考试 编程题|20分2/2 寻祖问宗 时间限制:C/C++语言 1000MS:其他语言 3000MS 内存限制:C/C+ ...

  5. windows查看端口占用的进程和杀死进程

    1通过端口查进程 idnetstat -ano | findstr "LISTENING"| findstr ":10000" 2.通过进程查应用(图为百度网盘 ...

  6. 转]Linux杀死进程方法大全

    2019独角兽企业重金招聘Python工程师标准>>> 2010年2月24日 乌帮图 发表评论 阅读评论 杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志. 首先使用 ...

  7. 动画解析:图的遍历方式有哪些?

    点击关注上方"五分钟学算法", 设为"置顶或星标",第一时间送达干货. 转自景禹 小禹禹,你们好呀,景禹今天给你们说一说图的遍历方法! 小禹禹: 好呀好呀,图的 ...

  8. windows通过cmd查看端口占用,并停止该端口,杀死进程kill等命令

    通过cmd查看端口占用,并停止该端口,杀死进程kill等命令 首先需要打开cmd命令窗口 方式一: 使用 win + R 快捷键方式打开运行窗口,输入"cmd",然后点击确定按钮打 ...

  9. linux杀死进程的五种方法

    方法一: Terminal终端输入: gnome-system-monitor,就可以打开system monitor 如图: 然后找到相应进程,右击选择kill process就可以了 方法二: 通 ...

最新文章

  1. python开发是做什么的-python开发工程师是做什么的
  2. Linux内核如何装载和启动一个可执行程序
  3. 1352. 虫洞【难度: 中 / 枚举 判环】
  4. 中国电梯行业动态调研与未来发展趋势展望报告2022-2028年版
  5. Oracle如何监控表的DML次数
  6. 揭秘鸿蒙生态背后的DevOps实践
  7. python电商用户购买力分析_Python + pandas + 不同客户购买力图形显示
  8. Emacs里一些古老的术语
  9. jQuery的Deferred
  10. Mapbar 地图 API 概念   技术文档
  11. python画图程序没有图_Python实现画图软件功能方法详解
  12. 填写【2fpmi2j】
  13. matlab画一个点电荷电场线,matlab画点电荷电场线
  14. 中美两国10万级作业调度工具 “TaskCtl“ Vs “Control-M“ 到底该如何选用?
  15. 贝叶斯(五)贝叶斯决策
  16. 「04」机器学习、深度学习需要哪些数学知识?
  17. ODL框架项目搭建小试牛刀-demo篇
  18. 科技百咖 | 探迹科技:让天下没有难做的销售
  19. WIN7双系统卸载与重装Ubuntu
  20. 【LOJ】apio2016烟火表演-可并堆凸包

热门文章

  1. windows环境下,如何在Pycharm下安装TensorFlow环境
  2. 大学c语言程序设计大赛,关于举办宁夏大学第二届C语言程序设计大赛的通知
  3. 操作系统内存分配算法_操作系统基础45-伙伴系统和slab内存分配
  4. JS_15作用域与作用域链
  5. 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
  6. 能设值多个rowkey吗_顶楼送了露台,悄悄搭建阳光房,偏偏我家露台多个帽子,能拆吗?...
  7. 第七季4:网络telnet调试、海思proc文件系统调试接口
  8. 驱动的定义、分类、安全性
  9. Oracle client 安装、配置
  10. [Deep Learning]任意层cnn的matlab版本实现