public class Solution {
public bool CanFinish(int numCourses, int[][] prerequisites) {
LinkedList<int>[] list = new LinkedList<int>[numCourses];
for (int i = 0; i < list.Length; i++)
{
list[i] = new LinkedList<int>();
}
int[] count = new int[numCourses];
foreach (var item in prerequisites)
{
list[item[1]].AddLast(item[0]);
count[item[0]]++;
}
Queue<int> queue = new Queue<int>();
for (int i = 0; i < numCourses; i++)
{
if (count[i] == 0)
queue.Enqueue(i);
}
if (queue.Count == numCourses)
return true;
while (queue.Count>0)
{
int j = queue.Dequeue();
LinkedListNode<int> p = list[j].First;
while(p!=null)
{
count[p.Value]--;
if (count[p.Value] == 0)
queue.Enqueue(p.Value);
p = p.Next;
}
}
bool flag = false;
foreach (var item in count)
{
if(item!=0)
{
flag = true;
break;
}
}
return flag == true ? false : true;
}
}
题目C#代码public class Solution { public bool CanFinish(int numCourses, int[][] prerequisites) { LinkedList<int>[] list = new LinkedList<int>[numCourses]; for (int i = 0; i < list.Length; i++) {