标签:
public class Solution { public int[] findOrder(int numCourses, int[][] prerequisites) { int[] re =new int[numCourses] ; int can = 0; int[] cnt = new int[numCourses] ; // for each course, how many prerequisites LinkedList<Integer> st = new LinkedList<Integer>(); // courses which need no prerequisites int m = prerequisites.length; for(int i=0; i<m; i++){ cnt[prerequisites[i][0]]++; } for(int i=0; i< numCourses; i++){ if(cnt[i]==0){ re[can++]=i; st.push(i); } } while(!st.isEmpty()){ int cur = st.pop(); for(int i=0;i<m;i++){ if(prerequisites[i][1]==cur){ if(--cnt[prerequisites[i][0]]==0){ re[can++]=prerequisites[i][0]; st.push(prerequisites[i][0]); } } } } return can== numCourses? re: new int[0]; } }
BFS
ref http://www.meetqun.com/thread-9208-1-1.html
标签:
原文地址:http://www.cnblogs.com/jiajiaxingxing/p/4529523.html