1. 程式人生 > >Course Schedule II leetcode java 走地牙

Course Schedule II leetcode java 走地牙

/* 1 建立list陣列 存放 基礎課程的後續課程, 2 建立int陣列 存放 後續課程需要的基礎課程數量; 3 建立queue 用於bfs 把基礎課程放入queue 每層bfs 找出 基礎課程的後續可能 若其需要基礎課程的數量為0 則 推入queue中,並且寫入result; */ class Solution {     public int[] findOrder(int numCourses, int[][] prerequisites) {         int[] result = new int[numCourses];         List[] postCourse = new ArrayList[numCourses];         int[] reqNum = new int[numCourses];         Queue<Integer> q = new LinkedList<>();         for(int i = 0; i < numCourses; i++) {             postCourse[i] = new ArrayList<Integer>();         }         for(int i = 0; i < prerequisites.length; i++) {             postCourse[prerequisites[i][1]].add(prerequisites[i][0]);             reqNum[prerequisites[i][0]]++;         }         for(int i = 0; i < numCourses; i++) {             if(reqNum[i] == 0) {                 q.offer(i);             }         }         int count = 0;         while(!q.isEmpty()) {             int temp = q.poll();             result[count++] = temp;             for(int i = 0; i < postCourse[temp].size(); i++) {                 reqNum[(int)postCourse[temp].get(i)]--;                 if(reqNum[(int)postCourse[temp].get(i)] == 0) {                     q.offer((int)postCourse[temp].get(i));                 }             }         }         if(count == numCourses) {             return result;         }         return new int[0];     } }