游戏官方网站开发设计报告,微信申请小程序流程,简易做海报网站,推销产品的万能句子题目
你这个学期必须选修 numCourses 门课程#xff0c;记为 0 到 numCourses - 1 。
在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出#xff0c;其中 prerequisites[i] [ai, bi] #xff0c;表示如果要学习课程 ai 则 必须 先学习课程 bi 。 …题目
你这个学期必须选修 numCourses 门课程记为 0 到 numCourses - 1 。
在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出其中 prerequisites[i] [ai, bi] 表示如果要学习课程 ai 则 必须 先学习课程 bi 。
例如先修课程对 [0, 1] 表示想要学习课程 0 你需要先完成课程 1 。 请你判断是否可能完成所有课程的学习如果可以返回 true 否则返回 false 。
示例 1
输入numCourses 2, prerequisites [[1,0]] 输出true 解释总共有 2 门课程。学习课程 1 之前你需要完成课程 0 。这是可能的。
解
class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {ArrayListInteger[] arr new ArrayList[numCourses];MapInteger, Integer degree new HashMap();for (int i 0; i numCourses; i) {degree.put(i, 0);arr[i] new ArrayList();}for (int[] item : prerequisites) {degree.put(item[0], degree.get(item[0]) 1);arr[item[1]].add(item[0]);}LinkedListInteger queue new LinkedList();for (Map.EntryInteger, Integer entry : degree.entrySet()) {if (entry.getValue() 0) {queue.offer(entry.getKey());}}LinkedListInteger result new LinkedList();while (!queue.isEmpty()){Integer poll queue.poll();result.add(poll);ListInteger list arr[poll];for (Integer item : list) {degree.put(item, degree.get(item) - 1);if (degree.get(item) 0) {queue.offer(item);}}}return result.size() numCourses;}
}