Advertisement
ogv

Untitled

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