leedcode: Course Schedule
来源:互联网 发布:wpsoffice软件下载 编辑:程序博客网 时间:2024/06/06 01:46
There are a total of n courses you have to take, labeled from 0
ton - 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.
Note:
The input prerequisites is a graph represented by a list of edges, not adjacency matrices. Read more abouthow a graph is represented.
这道题主要是判断有向图是否有环,用的是DFS的思想 这个题目用DFS比较合适,因为DFS一条龙深入下去,如果碰到之前访问过的,就是有环
class Solution {public: bool dfsVisit(vector<vector<int>*>& auxArray, int i, vector<int>& visit) { visit[i] = 1; if (auxArray[i] != NULL) { for (int j=0; j<auxArray[i]->size(); j++) { if (visit[auxArray[i]->at(j)] == 1) { return false; } if (dfsVisit(auxArray, auxArray[i]->at(j), visit) == false) { return false; } } } visit[i] = 2; return true; } bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { if ((numCourses > 0) && (prerequisites.size() == 0)) return true; vector<vector<int>* > auxArray(numCourses, NULL); for (int i=0; i<prerequisites.size(); i++) { if (auxArray[prerequisites[i].first] == NULL) { auxArray[prerequisites[i].first] = new vector<int>; } auxArray[prerequisites[i].first]->push_back(prerequisites[i].second); } vector<int> visit(numCourses, 0); bool ret = true; for (int i=0; i<auxArray.size(); i++) { if (dfsVisit(auxArray, i, visit) == false) { ret = false; break; } } for (int i=0; i<auxArray.size(); i++) { if (auxArray[i] != NULL) delete auxArray[i]; } return ret; }};
- leedcode: Course Schedule
- 【leedcode】207. Course Schedule
- 【leedcode】210. Course Schedule II
- 【Course Schedule】Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- Course Schedule
- databse学习资源
- 【图像处理】数字图像处理软件-特效--光晕特效(五)
- 黑马程序员--指向指针的指针 写的非常好 适合0基础菜鸟
- printf PRIu64
- uint8_t 头文件为#include<stdint.h>
- leedcode: Course Schedule
- Galaxy Zoo Challenge解决方案小结
- poj3734
- [PAT (Advanced Level) ]1011. World Cup Betting 解题文档
- Matplotlib - bar,scatter and histogram plots
- Js中获取超链接里面传递的参数值
- OBJ文件格式
- java
- AsyncTask的用法