leetcode 207. Course Schedule
2017-03-31 22:15
423 查看
难度:Medium
There are a total of n courses you have to take, labeled from
Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair:
Given the total number of courses and a list of prerequisite pairs, is it possible for you to finish all courses?
For example:
There are a total of 2 courses to take. To take course 1 you should have finished course 0. So it is possible.
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.
题解:一开始是考虑将所有的出现过的点压入一个vector 然后看所有点的入度 因为本质上这个问题就是一个找图里面环的问题 后来发现找错了方向 其实直接考虑前后位置就可以
这样用两个for循环就可以了 复杂度是n^2
代码如下:
class Solution {
public:
bool canFinish(int num, vector<pair<int, int>>& vec) {
for(int i=0;i<vec.size();i++)
{
int number=vec[i].second;
for(int k=0;k<vec.size();k++)
{
if(vec[k].first==vec[i].first)
continue;
else if(vec[k].first==number)
{
number=vec[k].second;
if(number==vec[i].first)
return false;
}
}
}
return true;
}
};
There are a total of n courses you have to take, labeled from
0to
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.
题解:一开始是考虑将所有的出现过的点压入一个vector 然后看所有点的入度 因为本质上这个问题就是一个找图里面环的问题 后来发现找错了方向 其实直接考虑前后位置就可以
这样用两个for循环就可以了 复杂度是n^2
代码如下:
class Solution {
public:
bool canFinish(int num, vector<pair<int, int>>& vec) {
for(int i=0;i<vec.size();i++)
{
int number=vec[i].second;
for(int k=0;k<vec.size();k++)
{
if(vec[k].first==vec[i].first)
continue;
else if(vec[k].first==number)
{
number=vec[k].second;
if(number==vec[i].first)
return false;
}
}
}
return true;
}
};
相关文章推荐
- Leetcode 207. Course Schedule
- 【LeetCode】207. Course Schedule (2 solutions)
- LeetCode 207. Course Schedule
- leetcode 207. Course Schedule
- [leetcode] 207. Course Schedule 解题报告
- [LeetCode] 207. Course Schedule
- [LeetCode]207. Course Schedule 课程表
- [leetcode]207. Course Schedule
- [LeetCode] 207. Course Schedule 课程安排
- [Leetcode] 207. Course Schedule 解题报告
- 【Leetcode】207. Course Schedule
- leetcode-207. Course Schedule
- LeetCode 207. Course Schedule(拓扑排序-求有向图中是否存在环)
- 【LeetCode】207. Course Schedule (Medium)
- LeetCode *** 207. Course Schedule (Topological Sort )
- LeetCode 207. Course Schedule
- [LeetCode]207. Course Schedule
- 第四周:[Leetcode]207. Course Schedule
- leetcode- 207. Course Schedule
- LeetCode207. Course Schedule