LeetCode Course Schedule
来源:互联网 发布:淘宝一件代发平台 编辑:程序博客网 时间:2024/06/05 02:37
Description:
here are a total of n courses you have to take, labeled from 0
to n - 1
.
Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1]
Given the total number of courses and a list of prerequisite pairs, is it possible for you to finish all courses?
For example:
2, [[1,0]]
There are a total of 2 courses to take. To take course 1 you should have finished course 0. So it is possible.
2, [[1,0],[0,1]]
There are a total of 2 courses to take. To take course 1 you should have finished course 0, and to take course 0 you should also have finished course 1. So it is impossible.
Solution:
拓扑排序,先根据前置要求将图构建出来,同时记录每个点的入度。
进行n次循环,每次循环做下面的处理:
1. 先找入度为1的点,如果找不到,就返回false
2. 找到某一个入度为0的点,将所有从这个点能出发到的边遍历,每条边的另一个点入度都减去1
3. 如此循环n次
import java.util.*;public class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {int n = numCourses;int indegree[] = new int[n];int mat[][] = new int[n][n];for (int l = 0; l < prerequisites.length; l++) {int i = prerequisites[l][0];int j = prerequisites[l][1];if (mat[i][j] == 1)continue;mat[i][j] = 1;indegree[j]++;}int index;for (int l = 0; l < n; l++) {index = -1;for (int i = 0; i < n; i++)if (indegree[i] == 0) {indegree[i] = -1;index = i;break;}if (index == -1)return false;for (int j = 0; j < n; j++)if (mat[index][j] == 1)indegree[j]--;}return true;}}
- Leetcode-Course Schedule && Course Schedule II
- leetcode-Course Schedule
- LeetCode 207 - Course Schedule
- [LeetCode] Course Schedule
- LeetCode Course Schedule
- [leetcode] Course Schedule
- Leetcode Course Schedule
- [leetcode]Course Schedule
- leetcode:Course Schedule
- [leetcode]Course Schedule II
- leetcode - Course Schedule II
- LeetCode Course Schedule II
- [leetcode] Course Schedule II
- [leetcode]Course Schedule
- leetcode:Course Schedule II
- [LeetCode] Course Schedule II
- Leetcode Course Schedule II
- leetcode 207: Course Schedule
- 软件乘法
- HOG介绍3
- 获取当前具有输入焦点控件的窗口句柄
- Uva 10881 - Piotr's Ants
- MVC 简单的POST局部刷新
- LeetCode Course Schedule
- 交换机三层转发
- 删除任务栏锁定,任务栏图标的位置,查找可行性文件的方式
- ref和out
- some list operation(#quote from MIT 'introduction to computation and programming using python, Revis
- hdu1181 变形课(vector容器+dfs)
- iOS中,在类的源文件(.m)中,@interface部分的作用?
- Numbers与MathType之间的特殊关联
- <Android>自定义竖向seekbar