Leetcode 582 Kill Process -递归reparent

题目链接leetcode582

题目简述:

本题是算法在操作系统的应用,每个process(进程)都有pid(process id),每个process都有唯一的父进程,用ppid (parent process id)代表,每个process可以有多个children process(子进程)。当我们kill某个process的时候,需要把它所有的children process也kill掉。所以本题就是要求我们在kill某个process的时候,找到所有需要kill的process。

思路:

假设我们需要kill的process为P,那么我们可以采用递归的方式,将所有的P的子进程、子进程的子进程等等的父进程都设置为P,而其他的所有进程的父进程都设置为0(把这个过程叫做reparent)。最后遍历数组就可以找到所有需要kill的process。

递归部分的代码为:

/*
 @param map: use map to store pid(key) and ppid(val)
 @param pid: pid of the process need to be reparent
 @param kill: pid of the process need to be kill
*/
int reparent(unordered_map<int, int>& map, int pid, int kill){
   
	if(map[pid] == 0 || map[pid] == kill) 
		return map[pid];
        
    int a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值