leetcode(207)课程表
课程表
解题思路:拓扑排序(实际上就是贪心算法)
class Solution { public boolean canFinish(int numCourses, int[][] prerequisites) { int len = prerequisites.length; if(len==0){ return true; } int[] degree = new int[numCourses]; for(int[] p : prerequisites){ degree[p[0]]++; } LinkedList<Integer> list = new LinkedList<>(); List<Integer> res = new ArrayList<>(); for(int i=0;i<numCourses;i++){ if(degree[i]==0){ list.addLast(i); } } int temp = 0; while(!list.isEmpty()){ temp = list.removeFirst(); res.add(temp); for(int[] p : prerequisites){ if(p[1]==temp){ degree[p[0]]--; if(degree[p[0]]==0){ list.addLast(p[0]); } } } } return res.size()==numCourses; } }