当前位置:网站首页>[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
边栏推荐
- How should programmers learn mathematics
- Mxnet imports various libcudarts * so、 libcuda*. So not found
- Matplotlib draws three-dimensional scatter and surface graphs
- Common features of ES6
- Label exchange experiment
- Interview related high-frequency algorithm test site 3
- Raki's notes on reading paper: code and named entity recognition in stackoverflow
- Web开发人员应该养成的10个编程习惯
- Ctfshow 2022 Spring Festival welcome (detailed commentary)
- Network security - record web vulnerability fixes
猜你喜欢

About the project error reporting solution of mpaas Pb access mode adapting to 64 bit CPU architecture

Uncover the seven quirky brain circuits necessary for technology leaders

Mxnet imports various libcudarts * so、 libcuda*. So not found

CSDN body auto generate directory
![[finebi] the process of making custom maps using finebi](/img/3a/d638dbac6a26c37087ec9550c35e63.png)
[finebi] the process of making custom maps using finebi

Invalid bound statement (not found) in idea -- problem solving

A solution to the problem that variables cannot change dynamically when debugging in keil5

Rome chain analysis

Discussion on the dimension of confrontation subspace

2022-2028 global and Chinese FPGA prototype system Market Research Report
随机推荐
Serpentine matrix
Realize the attention function of the article in the applet
Key review route of probability theory and mathematical statistics examination
QT Bluetooth: a class for searching Bluetooth devices -- qbluetooth devicediscoveryagent
3 minutes learn to create Google account and email detailed tutorial!
PHP reads the INI file and writes the modified content
Learning MVVM notes (1)
windows下Redis-cluster集群搭建
After the deployment of web resources, the navigator cannot obtain the solution of mediadevices instance (navigator.mediadevices is undefined)
CSDN body auto generate directory
Qt蓝牙:搜索蓝牙设备的类——QBluetoothDeviceDiscoveryAgent
Web开发人员应该养成的10个编程习惯
Scheduling system of kubernetes cluster
解密函数计算异步任务能力之「任务的状态及生命周期管理」
What are the building energy-saving software
Interview related high-frequency algorithm test site 3
NetSetMan pro (IP fast switching tool) official Chinese version v5.1.0 | computer IP switching software download
Construction d'un Cluster redis sous Windows
Network security - record web vulnerability fixes
[untitled]