Advertisement
ogv

Untitled

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