上次写了关于拓扑排序的写法,今天这个题就是关于拓扑排序的应用与改进。
第12题:207. Course Schedule
文章大意:课程安排,课程之间有依赖性。给定课程数,和课程之间的依赖,判断课程能否顺利完成。
题目分析:这不就是之前写的拓扑排序能干嘛吗?所以这是一个拓扑排序的问题,所以啊直接开始干。要注意的是,后面给数组中,后面一个表示前驱节点。即[1,0]表示的是0->1.
分析和实现主要见上篇文章:拓扑排序,这里直接贴代码:
class Solution {
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
if(numCourses <= 1 ) return true;
int len = prerequisites.size();
if(len==1) return true;
int degree[numCourses];
memset(degree, 0, sizeof(int)*numCourses);
int graph[numCourses][numCourses] = {0}; //二维数组存储邻接矩阵
for(int i=0;i<numCourses;i++){