LeetCode 582. 杀死进程(图的遍历)

文章目录

    • 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阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指向函数的指针 - C语言

欢迎访问我的新博客&#xff1a;http://www.milkcu.com/blog/ 原文地址&#xff1a;http://www.milkcu.com/blog/archives/1368947400.html 基本概念 在C语言中&#xff0c;函数本身不是变量&#xff0c;但可以定义指向函数的指针。这种类型的指针可以被赋值、存放在数组中、传…

python中的创建对象

创建对象 python中&#xff0c;可以根据已经定义的类去创建出一个个对象 创建对象的格式为: 对象名 类名() # 定义类 class Car&#xff08;object&#xff09;: # 移动 def move(self): print(车在奔跑...) # 鸣笛 def toot(self): …

计算机专业配置笔记本,学计算机专业的买什么样配置和价格的笔记本好?

学计算机专业的买什么样配置和价格的笔记本好&#xff1f;答案:5 信息版本&#xff1a;手机版解决时间 2021-05-10 08:17已解决2021-05-10 03:07学计算机专业的买什么样配置和价格的笔记本好&#xff1f;最佳答案2021-05-10 03:58二代i3 1G独显 2G内存 500G硬盘全部回答1楼202…

LeetCode 737. 句子相似性 II(并查集)

文章目录1. 题目2. 解题1. 题目 给定两个句子 words1, words2 &#xff08;每个用字符串数组表示&#xff09;&#xff0c;和一个相似单词对的列表 pairs &#xff0c;判断是否两个句子是相似的。 例如&#xff0c;当相似单词对是 pairs [["great", "fine&qu…

python中的_init_的使用

1. __init__方法 想一想:有没有办法能够在创建对象的时候&#xff0c;就顺便把车这个对象的属性给设置呢&#xff1f; 答:__init__()方法 使用方式&#xff1a; def 类名&#xff08;object&#xff09;: #初始化函数&#xff0c;用来完成一些默认的设定 def __in…

深入 JavaScript(4) - new运算符是如何工作的

接着上篇(//www.cnblogs.com/patrick-holynova/archive/2013/05/14/3077295.html), 来谈谈在OOP中重要的new运算. JavaScript 不像高级语言C, Java等本身就提供了对类的支持, 那么在Js中如何实现类, 类的实例? 对象字面量用构造器创建对象字面量, 例: Detail {game: World of…

计算机硬盘怎么设置ntfs,每次设置系统后,能否更改计算机硬盘分区的fat32和ntfs格式?...

f3622635硬盘的格式转换一个&#xff0c;FAT32到NTFS在“运行”中输入“ CMD”以打开“命令提示符”窗口&#xff0c;输入: “ CONVERT F: / FS: NTFS”&#xff0c;其中“ F: ”是分区驱动器号(带冒号)&#xff0c;“ / FS: NTFS“是将指定的分区转换为NTFS格式.我认为它会很快…

python中_str_使用方法

定义__str__()方法: class Car: def __init__(self, newWheelNum, newColor): self.wheelNum newWheelNum self.color newColor def __str__(self): msg "嘿。。。我的颜色是" self.color "我有" int(self.wh…

LeetCode 708. 循环有序列表的插入

文章目录1. 题目2. 解题1. 题目 给定循环升序列表中的一个点&#xff0c;写一个函数向这个列表中插入一个新元素&#xff0c;使这个列表仍然是循环升序的。 给定的可以是这个列表中任意一个顶点的指针&#xff0c;并不一定是这个列表中最小元素的指针。 如果有多个满足条件的…

VMWare serve 2.0 进入 RHEL Linux rescue模式

可能由于我的鼠标点击速度比较慢所以一直没机会在 VMware Serve启动的时候按F2进入bios 模式&#xff0c;哈哈。 1.在次用另外一种方式&#xff1a; 2.进入bios 系统后&#xff0c;选择“boot”&#xff0c;再选"CD/ROM"&#xff0c;上移到第一位。 3.在boot:后面输入…

计算机主页被篡改这是来自互联网的风险,IE主页为2345.com无法修改回来的解决方法...

X〒ⅠⅡⅢⅣφ〃IE主页为2345.com无法修改回来的解决方法近期,接到不少网友反馈,主页被改为2345.com了,改不回来,请问有何好的解决方法,现特地总结了些资料如下,供大家参考:1、IE默认连接首页被修改受到更改的注册表项目为&#xff1a;HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft…

LeetCode 755. 倒水(模拟)

文章目录1. 题目2. 解题1. 题目 给出一个地形高度图&#xff0c; heights[i] 表示该索引处的高度。 每个索引的宽度为 1。在 V 个单位的水落在索引 K 处以后&#xff0c;每个索引位置有多少水&#xff1f; 水最先会在索引 K 处下降并且落在该索引位置的最高地形或水面之上。然…

python中的self含义及使用方法

self # 定义一个类 class Animal: # 方法 def __init__(self, name): self.name name def printName(self): print(名字为:%s%self.name) # 定义一个函数 def myPrint(animal): animal.printName() dog1 Animal(西西) myPrint(…

Galaxy s4怎么安装一个预装软件的签名不一致的新版本

公司新买一台galaxy s4&#xff0c;要测试一个软件。但是该软件在s4上面已经有预装版本了&#xff0c;无法安装。 用了下列方法才安装成功&#xff1a; 1. 请卖手机的帮忙获得root权限。 2. 检查s4是否已经root, 在手机上安装360安全卫士。然里面有工具->一键root&#xff0…

win10计算机修改底色,win10电脑如何修改登陆背景

win10中如何修改登陆时的背景图片&#xff1f;在win10中登陆界面的图片总是只有那几个背景图片&#xff0c;那登陆界面的背景图片能够更换么&#xff0c;答案是肯定的&#xff0c;下面小编就详细的给大家介绍一下背景更换的问题&#xff0c;希望能够帮助到大家。win10中更换登陆…

LeetCode 444. 序列重建(拓扑排序)

文章目录1. 题目2. 解题1. 题目 验证原始的序列 org 是否可以从序列集 seqs 中唯一地重建。 序列 org 是 1 到 n 整数的排列&#xff0c;其中 1 ≤ n ≤ 104。 重建是指在序列集 seqs 中构建最短的公共超序列。&#xff08;即使得所有 seqs 中的序列都是该最短序列的子序列&am…

python中的保护对象数据

保护对象数据 查看过着修改对象的属性&#xff08;数据&#xff09;&#xff0c;有2种方法。 直接通过对象名修改 通过方法间接修改 Python中没有像C中public和private这些关键字来区别公有属性和私有属性。它是以属性命名方式来区分&#xff0c;如果在属性名前面加了2个下划…

Highcharts 本地导出图片 Java

下载的 Highcharts-2.3.5.zip 解压后 有 E:\Highcharts\Highcharts-2.3.5\exporting-server\java 目录 提供了Java实现的导出应用。 1&#xff09;安装maven&#xff0c;配置环境变量. &#xff08;http://maven.apache.org/download.cgi&#xff09; 1.jdk 我装的是E:\java\j…

华硕主板如何用u盘启动计算机,华硕主板怎么设置u盘启动都有哪些方法

随着互联网的不断发展&#xff0c;现在使用电脑的机会越来越多了。但是机器难免出故障&#xff0c;或者对于新的电脑需要设置启动。那么华硕主板怎么设置u盘启动。下面由一键工作室介绍一下。华硕主板怎么设置u盘启动华硕主板怎么设置u盘启动 华硕主板设置u盘启动方法1、首先&a…

LeetCode 353. 贪吃蛇(deque+set)

文章目录1. 题目2. 解题1. 题目 请你设计一个 贪吃蛇游戏&#xff0c;该游戏将会在一个 屏幕尺寸 宽度 x 高度 的屏幕上运行。 起初时&#xff0c;蛇在左上角的 (0, 0) 位置&#xff0c;身体长度为 1 个单位。 你将会被给出一个 (行, 列) 形式的食物位置序列。当蛇吃到食物…