当前位置:网站首页>[crampon programming] lintcode decoding Encyclopedia - 872 termination process
[crampon programming] lintcode decoding Encyclopedia - 872 termination process
2022-07-05 04:31:00 【BZIClaw】
【 Crampon programming 】LintCode Decoding Encyclopedia —— 872 Terminate the process
author :BZIClaw
872 Terminate the process
Python:
class Solution:
""" @param pid: the process id @param ppid: the parent process id @param kill: a PID you want to kill @return: a list of PIDs of processes that will be killed in the end """
def killProcess(self, pid, ppid, kill):
m={
}
for i,parent in enumerate(ppid):
if parent not in m:
m[parent] = []
m[parent].append(pid[i])
ans=[]
que=[kill]
while que:
cur = que.pop(0)
ans.append(cur)
if cur in m:
que +=m[cur]
return ans
# Write your code here
Java:
public class Solution {
/** * @param pid: the process id * @param ppid: the parent process id * @param kill: a PID you want to kill * @return: a list of PIDs of processes that will be killed in the end */
public List<Integer> killProcess(List<Integer> pid, List<Integer> ppid, int kill) {
Map<Integer, List<Integer>> map = new HashMap<>();
List<Integer> result = new ArrayList<>();
for (int i = 0; i < pid.size(); i++) {
List<Integer> list = map.getOrDefault(ppid.get(i), new ArrayList<>());
list.add(pid.get(i));
map.put(ppid.get(i), list);
}
List<Integer> list = new ArrayList<>();
list.add(kill);
killChildProcess(map, list, kill);
return list;
}
private void killChildProcess(Map<Integer, List<Integer>> map, List<Integer> list, int kill) {
if (map.containsKey(kill)) {
for (Integer i : map.get(kill)) {
list.add(i);
killChildProcess(map, list, i);
}
}
}
}
C++:
class Solution {
public:
/** * @param pid: the process id * @param ppid: the parent process id * @param kill: a PID you want to kill * @return: a list of PIDs of processes that will be killed in the end */
void dfs(unordered_map<int,vector<int>>& tree,int cur,vector<int>& ret){
for(auto& pid:tree[cur]){
dfs(tree,pid,ret);
}
ret.emplace_back(cur);
}
vector<int> killProcess(vector<int> &pid, vector<int> &ppid, int kill) {
// Write your code here
int n=pid.size();
vector<int> ret;
unordered_map<int,vector<int>> tree;
for(int i=0;i<n;++i){
tree[ppid[i]].emplace_back(pid[i]);
}
dfs(tree,kill,ret);
return ret;
}
};
JavaScript:
export class Solution {
/** * killProcess * * @param pid: the process id * @param ppid: the parent process id * @param kill: a PID you want to kill * @return: a list of PIDs of processes that will be killed in the end */
killProcess(pid, ppid, kill) {
// Write your code here
const cid = {
};
for(let i = 0 ; i < ppid.length ; ++i) {
const p = ppid[i];
const c = pid[i];
if(cid[p] === void 0) {
cid[p] = [c];
}else{
cid[p].push(c);
}
}
const ans = [];
const dfs = (id) => {
ans.push(id);
if(cid[id] === void 0) return;
if(cid[id]) {
for(const c of cid[id]) {
dfs(c);
}
}
}
dfs(kill);
return ans;
}
}
Go:
/** * @param pid: the process id * @param ppid: the parent process id * @param kill: a PID you want to kill * @return: a list of PIDs of processes that will be killed in the end */
import (
"sort"
)
type Arr []int
func (l Arr) Len() int {
return len(l) }
func (l Arr) Swap(i, j int) {
l[i], l[j] = l[j], l[i] }
func (l Arr) Less(i, j int) bool {
return l[i] < l[j] }
func killProcess(pid []int, ppid []int, kill int) []int {
mapParent := make(map[int][]int)
for index, value := range pid {
if ppid[index] == 0 {
continue
}
if _, ok := mapParent[ppid[index]]; !ok {
mapParent[ppid[index]] = make([]int, 0)
}
mapParent[ppid[index]] = append(mapParent[ppid[index]], value)
}
queue := make([]int, 0)
queue = append(queue, kill)
end := 0
for end < len(queue) {
for ; end < len(queue); end++ {
if _, ok := mapParent[queue[end]]; !ok {
continue
}
for _, next := range mapParent[queue[end]] {
queue = append(queue, next)
}
}
}
sort.Sort(Arr(queue))
return queue
}
Pay attention to me , Learn more about programming
边栏推荐
- 取余操作是一个哈希函数
- mysql的七种join连接查询
- How to force activerecord to reload a class- How do I force ActiveRecord to reload a class?
- Threejs Internet of things, 3D visualization of farms (I)
- 【虚幻引擎UE】实现背景模糊下近景旋转操作物体的方法及踩坑记录
- 解密函数计算异步任务能力之「任务的状态及生命周期管理」
- [phantom engine UE] realize the animation production of mapping tripod deployment
- [Chongqing Guangdong education] 2408t Chinese contemporary literature reference test in autumn 2018 of the National Open University
- C26451: arithmetic overflow: use the operator * on a 4-byte value, and then convert the result to an 8-byte value. To avoid overflow, cast the value to wide type before calling the operator * (io.2)
- 10 programming habits that web developers should develop
猜你喜欢
TPG x AIDU|AI领军人才招募计划进行中!
About the project error reporting solution of mpaas Pb access mode adapting to 64 bit CPU architecture
About the prompt loading after appscan is opened: guilogic, it keeps loading and gets stuck. My personal solution. (it may be the first solution available in the whole network at present)
防护电路中的元器件
Uncover the seven quirky brain circuits necessary for technology leaders
Setting up redis cluster cluster under Windows
Threejs Internet of things, 3D visualization of farms (II)
直播预告 | 容器服务 ACK 弹性预测最佳实践
mysql的七种join连接查询
Invalid bound statement (not found) in idea -- problem solving
随机推荐
[Chongqing Guangdong education] 2408t Chinese contemporary literature reference test in autumn 2018 of the National Open University
10 programming habits that web developers should develop
防护电路中的元器件
取余操作是一个哈希函数
[phantom engine UE] package error appears! Solutions to findpin errors
Aperçu en direct | Services de conteneurs ACK flexible Prediction Best Practices
[untitled]
OWASP top 10 vulnerability Guide (2021)
Managed service network: application architecture evolution in the cloud native Era
Ffmepg usage guide
Hexadecimal to decimal
网络安全-记录web漏洞修复
2022-2028 global and Chinese video coding and transcoding Market Research Report
Neural networks and deep learning Chapter 5: convolutional neural networks reading questions
Uncover the seven quirky brain circuits necessary for technology leaders
web资源部署后navigator获取不到mediaDevices实例的解决方案(navigator.mediaDevices为undefined)
Bit operation skills
Leetcode hot topic Hot 100 day 33: "subset"
解密函数计算异步任务能力之「任务的状态及生命周期管理」
How to carry out "small step reconstruction"?