Advertisement
ogv

Untitled

ogv
Sep 23rd, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.12 KB | None | 0 0
  1. class Solution {
  2.     public int[] findOrder(int numCourses, int[][] prerequisites) {
  3.         HashSet<Integer> nodes = new HashSet<>();
  4.         HashMap<Integer, HashSet<Integer>> deps = new HashMap<>();
  5.        
  6.         for (int i = 0; i < numCourses; i++) {
  7.             nodes.add(i);
  8.             deps.put(i, new HashSet<Integer>());
  9.         }
  10.        
  11.         for (int[] req: prerequisites) {
  12.             deps.get(req[0]).add(req[1]);            
  13.         }
  14.        
  15.         List<Integer> res = new ArrayList<>();
  16.        
  17.         while (nodes.size() > 0){
  18.             HashSet<Integer> out = new HashSet<>();
  19.            
  20.             for (int node: nodes){
  21.                 if (deps.get(node).size() == 0) out.add(node);
  22.             }
  23.            
  24.             if (out.size() == 0) return new int[0];
  25.  
  26.             nodes.removeAll(out);
  27.             for (int node: nodes) deps.get(node).removeAll(out);
  28.            
  29.             res.addAll(out);
  30.         }
  31.        
  32.         int[] result = new int[numCourses];
  33.         for (int i = 0; i < numCourses; i++) result[i] = res.get(i);
  34.         return result;
  35.     }      
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement