先修课程按数组prerequisites给出,其中prerequisites[i] = [ai, bi],表示如果要学习课程ai则必须先学习课程bi。 例如,先修课程对[0, 1]表示:想要学习课程0,你需要先完成课程1。 请你判断是否可能完成所有课程的学习?如果可以,返回true;否则,返回false。 示例1: 输入:numCourses = 2, prerequisites = [[1,0...
课程表 - 力扣(LeetCode) 先修课程,判断课程能不能修完,这是一个判断拓扑有序的问题,看看会不会成环 先建立有向图,记录每个顶点的入度,把入度为0的入队列 入度为0的说明没有先修课程,取出来修,并将相连的节点的入度减一,说明先修课程已经修了一个了,再判断有没有新的课程可以修的入队 最后判断修了的...
LeetCode 课程安排 207(java) 一、题目 注意;输入条件是邻接表,而不是邻接矩阵。假设没有重复边 题目分析: 题目是说,课程之间有依赖关系,必须完成一门之前,先完成它的依赖课程。 所以,如果有环的话,就不可能完成所有的课程。因此题目就是判断,图中是否有环。 (1)可以使用深度优先遍历(DFS) 思路是,正在进行该...
}//构建队列Queue<Integer> queue =newLinkedList<>();//对每门课程 设置其对应的入度和邻接表(存放后继successor结点的集合)//想要学习课程0,先要完成课程1,表示为[0,1]for(int[] course : prerequisites){//因为course[0]之前先要学习course[1],所以course[0]入度++indegrees[course[0]]++;//key:课...
【LeetCode-图】课程表 题目描述# 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1] 给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?
首先,我们需要用一个数据结构来存储课程之间的依赖关系。不妨使用 hashmap,这样可以在 $O(1)$ 的时间获取到一个课程的所有前置课程。接下来,我们使用一个数组 studied 来表示已经学习的课程,其中 studied[i] 是一个布尔值,表示第 i 个课程是否已经学习。假设我们的 studied 已经确认了,那么下一步我们可以...
例如,想要学习课程0,你需要先完成课程1,我们用一个匹配来表示:[0,1]。 返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回任意一种就可以了。如果不可能完成所有课程,返回一个空数组。 示例1: 输入:numCourses = 2, prerequisites = [[1,0]]输出:[0,1]解释:总共有 2 门课程。
classSolution{public://a[0]=1--->学习0,需要先学习1boolcanFinish(int numCourses,vector<vector<int>>&prerequisites){//逆邻接表---记录学习每一门课程前需要学习的课程vector<vector<int>>res(numCourses);//p[1]--->p[0]for(int i=0;i<prerequisites.size();i++)res[prerequisites[i][1]]....
LeetCode207. 课程表(2024秋季每日一题 55) 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。
add(n); } } int[] res = new int[numCourses]; int j = 0; while(!zeroQueue.isEmpty()) { Node cur = zeroQueue.poll(); res[j++] = cur.value; for(Node next: cur.next) { next.in--; if(next.in == 0) { zeroQueue.add(next); } } } return j == numCourses ? res: ...