classSolution{publicbooleancanFinish(int numCourses,int[][] prerequisites){// Part 1: initint[] in =newint[numCourses];List<List<Integer>> out =newArrayList<>();for(int i =0; i < numCourses; i++){out.add(newArrayList<>());}// Part 2: 出入度維護for(int i =0; i < prerequisites.length; i++){in[prerequisites[i][0]]++;out.get(prerequisites[i][1]).add(prerequisites[i][0]);}// Part 3: 課程清除Deque<Integer> queue =newArrayDeque<>();for(int i =0; i < in.length; i++){if(in[i]==0){queue.offer(i);numCourses--;}}while(!queue.isEmpty()){int pre = queue.poll();for(int temp : out.get(pre)){if(--in[temp]==0){numCourses--;queue.offer(temp);}}}return numCourses ==0;}}