题目:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020051418460566.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0taSDM0,size_16,color_FFFFFF,t_70)
思路:
- 基本和207题一样,只不过增加一个数组来存学习的课程顺序。
- 需要注意的入栈的判断语句紧挨着入度操作减1,一旦有减过后等于0的,就要入栈操作了。
- 空整型数组的定义。
代码:
```csharp
public class Solution {
public int[] FindOrder(int numCourses, int[][] prerequisites) {
Stack<int> stack=new Stack<int>();
int []result=new int[numCourses];
int[]id=new int[numCourses];
int len=prerequisites.Length;
for(int i=0;i<len;i++)
{
id[prerequisites[i][0]]++;
}
for(int i=0;i<numCourses;i++)
{
if(id[i]==0)
stack.Push(i);
}
int count=0;
while(stack.Count!=0)
{
int j=(int)stack.Pop();
result[count]=j;
count++;
for(int k=0;k<len;k++)
{
if(prerequisites[k][1]==j)
{ id[prerequisites[k][0]]--;
if(id[prerequisites[k][0]]==0)
stack.Push(prerequisites[k][0]);}
}
}
if(count!=numCourses)
{ int[]a=new int[0];
return a;}
else return result;
}
}
补充:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200514185330788.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0taSDM0,size_16,color_FFFFFF,t_70)