【Leetcode】Course Schedule
来源:互联网 发布:三菱plcfx3u编程手册 编辑:程序博客网 时间:2024/06/06 12:30
题目链接:
题目:https://leetcode.com/problems/course-schedule/
题目:
There 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.
思路:
拓扑排序,计算无环结点个数,
算法:
public boolean canFinish(int numCourses, int[][] prerequisites) { int preCount[] = new int[numCourses]; Queue<Integer> notPre = new LinkedList<Integer>(); // 统计每个结点作为前驱的次数 for (int i = 0; i < prerequisites.length; i++) { preCount[prerequisites[i][0]]++; } // 记录出度为0的结点 for (int i = 0; i < preCount.length; i++) { if (preCount[i] == 0) { notPre.offer(i); } } int num = notPre.size();// 可以拓扑排序的节点个数 while (!notPre.isEmpty()) {//BFS int node = notPre.poll(); for (int i = 0; i < prerequisites.length; i++) { if (prerequisites[i][1] == node) { preCount[prerequisites[i][0]]--;//删除和node有关的边 if (preCount[prerequisites[i][0]] == 0) {//如果出度为0 num++; notPre.offer(prerequisites[i][0]); } } } } return num == numCourses; }
- 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
- 性能优化总结
- 第10.11-补充2-2
- IPSEC与SSL/TLS的比较
- 影响到Spark输出RDD分区的操作函数
- 【Leetcode】Minimum Height Trees
- 【Leetcode】Course Schedule
- 2016年上半年软考总结
- 【Leetcode】Course Schedule II
- AIDL的小demo
- 数组
- Apache Flink数据流的Fault Tolerance机制
- 一个php文件实现打印金字塔
- Python流程控制
- 表情识别数据集整理