LeetCode 582

来源:互联网 发布:淘宝达人链接 编辑:程序博客网 时间:2024/06/05 07:18

map+队列,因为PID的父类不会继承多个PPID,所以我们可以用PPID作为键值,把PPID的孩子们都找到存在Map中,KILL某个进程时,依次把它的孩子进程也杀死即可,因此存在队列中

public List<Integer> killProcess(List<Integer> pid, List<Integer> ppid, int kill) {        Map<Integer,List<Integer>> map = new HashMap<>();        for (int i = 0; i < ppid.size(); i++){            map.computeIfAbsent(ppid.get(i), k -> new ArrayList<Integer>()).add(pid.get(i));        }        List<Integer> ans = new ArrayList<>();        Queue<Integer> queue = new LinkedList<>();        queue.offer(kill);        while (!queue.isEmpty()){            int target = queue.poll();            ans.add(target);            if (map.containsKey(target)){                List<Integer> tmp = map.get(target);                for (int num : tmp){                    queue.offer(num);                }            }        }        return ans;    }