207. Course Schedule
来源:互联网 发布:文泰刻绘2002端口设置 编辑:程序博客网 时间:2024/06/10 15:40
这就是一个在图中找圈的问题。
超时代码,估摸着肯定有很多的路重复走了很多次,所以下一步就是想办法减少重复路径。
超时代码:
class Solution {public: //start=0; bool BFS(vector<int>& visit,int start,vector<vector<int>>& matrix) { for(int i=0;i<matrix.size();i++) { if(matrix[start][i]==1) { if(visit[i]==1) return false; else { visit[i]=1; if(BFS(visit,i,matrix)==false) return false; visit[i]=0; } } } return true; } bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { vector<int> temp(numCourses,0); vector<vector<int>> matrix(numCourses,temp); for(int i=0;i<prerequisites.size();i++) matrix[prerequisites[i].second][prerequisites[i].first]=1; /*for(int i=0;i<numCourses;i++) { for(int j=0;j<numCourses;j++) cout<<matrix[i][j]<<" "; cout<<endl; }*/ vector<int> visit(numCourses,0); for(int start=0;start<numCourses;start++) { visit[start]=1; if(BFS(visit,start,matrix)==false) return false; visit[start]=0; } return true; }};
增加一个rightNode数组,成功AC,最终AC代码为:六次AC啊,都要哭了==
class Solution {public: //start=0; bool BFS(vector<int>& visit,vector<int>& rightNodes,int start,vector<vector<int>>& matrix) { for(int i=0;i<matrix.size();i++) { if(matrix[start][i]==1) { if(visit[i]==1) return false; else if(rightNodes[i]==1) {} else { visit[i]=1; if(BFS(visit,rightNodes,i,matrix)==false) return false; visit[i]=0; } } } rightNodes[start]=1; return true; } bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { vector<int> temp(numCourses,0); vector<vector<int>> matrix(numCourses,temp); for(int i=0;i<prerequisites.size();i++) matrix[prerequisites[i].second][prerequisites[i].first]=1; vector<int> visit(numCourses,0); vector<int> rightNodes(numCourses,0); for(int start=0;start<numCourses;start++) { if(rightNodes[start]==0) { visit[start]=1; if(BFS(visit,rightNodes,start,matrix)==false) return false; else rightNodes[start]=1; visit[start]=0; } } return true; }};
0 0
- [leetcode] 207.Course Schedule
- 207.Course Schedule
- Leetcode 207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule LeetCode
- 207. Course Schedule
- leetcode 207. Course Schedule
- 207. Course Schedule
- leetcode.207. Course Schedule
- LeetCode 207. Course Schedule
- 【LeetCode】207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule
- [leetcode] 207. Course Schedule
- leetcode-207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule
- 分享一个小工具:Excel表快速转换成JSON字符串
- 分治案例_leetcode_46. Permutations-全排列
- installation directory must be on a local hard drive
- Android实现两次按下返回按钮后退出应用程序
- stillOne Description
- 207. Course Schedule
- 数组转化为列表的一个陷阱
- PHP中call_user_func_array()函数的用法演示
- 线程池的原理及实现
- 输出编译ota升级包时的打包参数
- TFS发布计划发送到钉钉消息群
- 将小项目部署在Heroku
- Android APP多屏幕适配
- HDU-Delta-wave(C++中的强制转换与sqrt函数的一些小细节)