package question;import java.util.*;public class Question207 {//广度优先public boolean canFinish(int numCourses, int[][] prerequisites) {int[] adCnt = new int[numCourses];List<Integer>[] adList = new List[numCourses];for (int i = 0; i < numCourses; i++) {adList[i]=new ArrayList<>();}for (int[] prerequisite : prerequisites) {adCnt[prerequisite[0]]++;adList[prerequisite[1]].add(prerequisite[0]);}Queue<Integer> queue = new LinkedList<>();int x=0;for (int i = 0; i < adCnt.length; i++) {if (adCnt[i]==0)queue.offer(i);}while (!queue.isEmpty()) {Integer pre = queue.poll();x++;for (int i = 0; i < adList[pre].size(); i++) {int k = adList[pre].get(i);adCnt[k]--;if (adCnt[k]==0) queue.add(k);}}return x == numCourses;}List<List<Integer>> adList;int[] status;boolean res;public boolean canFinish2(int numCourses, int[][] prerequisites) {status=new int[numCourses];adList=new ArrayList<>();res=true;for (int i = 0; i < numCourses; i++) {adList.add(new ArrayList<>());}for (int[] prerequisite : prerequisites) {adList.get(prerequisite[1]).add(prerequisite[0]);}for (int i = 0; i < numCourses && res; i++) {if (status[i]==0) dfs(i);}return res;}private void dfs(int x) {status[x]=1;for (Integer k : adList.get(x)) {if (status[k]==0) {dfs(k);if (!res) return;} else if (status[k]==1) {res=false;return;}}status[x]=2;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。