博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Kill Process
阅读量:5236 次
发布时间:2019-06-14

本文共 1916 字,大约阅读时间需要 6 分钟。

原题链接在这里:

题目:

Given n processes, each process has a unique PID (process id) and its PPID (parent process id).

Each process only has one parent process, but may have one or more children processes. This is just like a tree structure. Only one process has PPID that is 0, which means this process has no parent process. All the PIDs will be distinct positive integers.

We use two list of integers to represent a list of processes, where the first list contains PID for each process and the second list contains the corresponding PPID.

Now given the two lists, and a PID representing a process you want to kill, return a list of PIDs of processes that will be killed in the end. You should assume that when a process is killed, all its children processes will be killed. No order is required for the final answer.

Example 1:

Input: pid =  [1, 3, 10, 5]ppid = [3, 0, 5, 3]kill = 5Output: [5,10]Explanation:            3         /   \        1     5             /            10Kill 5 will also kill 10.

Note:

  1. The given kill id is guaranteed to be one of the given PIDs.
  2. n >= 1.

题解:

通过存pid 和 ppid 的两个list 建立起 parent 和 它对应children list的map.

然后用DFS 或 BFS 从给出的process id走起就好.

Time Complexity: O(n). n = pid.size().

Space: O(n).

AC Java:

1 class Solution { 2     public List
killProcess(List
pid, List
ppid, int kill) { 3 HashMap
> hm = new HashMap
>(); 4 for(int i = 0; i
0){ 7 List
item = hm.getOrDefault(parent, new ArrayList
()); 8 item.add(pid.get(i)); 9 hm.put(parent, item);10 }11 }12 13 List
res = new ArrayList
();14 LinkedList
que = new LinkedList
();15 que.add(kill);16 while(!que.isEmpty()){17 int cur = que.poll();18 res.add(cur);19 if(hm.containsKey(cur)){20 que.addAll(hm.get(cur));21 }22 }23 24 return res;25 }26 }

 

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/8123934.html

你可能感兴趣的文章
小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(一)视图共性 学习笔记...
查看>>
HDU 6092 Rikka with Subset(递推)
查看>>
xpath ignore case query/xpath 不区分大小写
查看>>
8月9号水题走一波(下午)-个人赛六
查看>>
计算机组成原理——程序中断方式
查看>>
第六篇:对赚钱的义利观
查看>>
LeetCode 234. 回文链表
查看>>
Bootstrap 基本css样式
查看>>
生成0~9之间不重复的随机数
查看>>
台球小游戏
查看>>
WebClient DownloadStringAsync/UploadStringAsync和OpenWriteAsync/OpenReadAsync的区别
查看>>
Excel地址 (进制问题)
查看>>
POJ 1182 食物链
查看>>
【转】想象5年后的你
查看>>
记账小软件典型用户分析
查看>>
经典二叉树问题 根据前序和中序生成后序
查看>>
<ios开发入门> iTahDoodle任务管理程序
查看>>
【密码学】密码学基础
查看>>
bzoj1086 [SCOI2005]王室联邦
查看>>
省选模拟赛 至危警告
查看>>