最近就是忙工作项目 工作间隙就刷了刷LEETCODE 所以没啥更新

 // 1111111.cpp: 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <vector>
#include <queue> using namespace std; bool canFinish1(int numCourses, vector<vector<int>>& prerequisites) {
vector<vector<int> > graph(numCourses, vector<int>());
vector<int> in(numCourses, );
for (auto a : prerequisites) {
graph[a[]].push_back(a[]);
++in[a[]];
}
queue<int> q;
for (int i = ; i < numCourses; ++i) {
if (in[i] == ) q.push(i);
}
while (!q.empty()) {
int t = q.front();
q.pop();
for (auto a : graph[t]) {
--in[a];
if (in[a] == ) q.push(a);
}
}
for (int i = ; i < numCourses; ++i) {
if (in[i] != ) return false;
}
return true;
} //========================================================================== bool canFinishDFS(vector<vector<int> > &graph, vector<int> &visit, int i) {
if (visit[i] == -) return false;
if (visit[i] == ) return true;
visit[i] = -;
for (auto a : graph[i]) {
if (!canFinishDFS(graph, visit, a)) return false;
}
visit[i] = ;
return true;
} bool canFinish2(int numCourses, vector<vector<int> >& prerequisites) {
vector<vector<int> > graph(numCourses, vector<int>());
vector<int> visit(numCourses, );
for (auto a : prerequisites) {
graph[a[]].push_back(a[]);
}
for (int i = ; i < numCourses; ++i) {
if (!canFinishDFS(graph, visit, i)) return false;
}
return true;
} int main()
{
//测试数据
{
int i = ;
vector<vector<int> > v;
v.push_back(std::vector<int>{, });
v.push_back(std::vector<int>{ ,});
canFinish1(i , v);
}
//{
// int i = 2;
// vector<vector<int> > v;
// v.push_back(std::vector<int>{1, 0});
// v.push_back(std::vector<int>{0, 1});
//}
//{
// int i = 2;
// vector<vector<int> > v;
// v.push_back(std::vector<int>{1, 0});
//}
//{
// int i = 3;
// vector<vector<int> > v;
// v.push_back(std::vector<int>{1, 0});
// v.push_back(std::vector<int>{2, 0});
//} // {
// int i = 3;
// vector<vector<int> > v;
// v.push_back(std::vector<int>{1, 0});
// v.push_back(std::vector<int>{2, 0});
// }
//
// {
// int i = 3;
// vector<vector<int> > v;
// v.push_back(std::vector<int>{0, 1});
// v.push_back(std::vector<int>{1, 2});
// }
//
// {
// int i = 4;
// vector<vector<int> > v;
// v.push_back(std::vector<int>{0, 1});
// v.push_back(std::vector<int>{1, 2});
// v.push_back(std::vector<int>{2, 0});
// v.push_back(std::vector<int>{1, 3});
// }
//
// {
// int i = 4;
// vector<vector<int> > v;
// v.push_back(std::vector<int>{0, 1});
// v.push_back(std::vector<int>{1, 2});
// v.push_back(std::vector<int>{1, 3});
// } return ;
}

leetcode 207

20180613更新 leetcode刷题的更多相关文章

  1. LeetCode刷题专栏第一篇--思维导图&时间安排

    昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...

  2. LeetCode刷题总结之双指针法

    Leetcode刷题总结 目前已经刷了50道题,从零开始刷题学到了很多精妙的解法和深刻的思想,因此想按方法对写过的题做一个总结 双指针法 双指针法有时也叫快慢指针,在数组里是用两个整型值代表下标,在链 ...

  3. LeetCode刷题总结-数组篇(上)

    数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题 ...

  4. LeetCode刷题总结-数组篇(中)

    本文接着上一篇文章<LeetCode刷题总结-数组篇(上)>,继续讲第二个常考问题:矩阵问题. 矩阵也可以称为二维数组.在LeetCode相关习题中,作者总结发现主要考点有:矩阵元素的遍历 ...

  5. LeetCode刷题总结-数组篇(下)

    本期讲O(n)类型问题,共14题.3道简单题,9道中等题,2道困难题.数组篇共归纳总结了50题,本篇是数组篇的最后一篇.其他三个篇章可参考: LeetCode刷题总结-数组篇(上),子数组问题(共17 ...

  6. LeetCode刷题总结-树篇(上)

          引子:刷题的过程可能是枯燥的,但程序员们的日常确不乏趣味.分享一则LeetCode上名为<打家劫舍 |||>题目的评论: 如有兴趣可以从此题为起点,去LeetCode开启刷题之 ...

  7. LeetCode刷题笔记和想法(C++)

    主要用于记录在LeetCode刷题的过程中学习到的一些思想和自己的想法,希望通过leetcode提升自己的编程素养 :p 高效leetcode刷题小诀窍(这只是目前对我自己而言的小方法,之后会根据自己 ...

  8. LeetCode刷题模板(1):《我要打10个》之二分法

    Author       :  叨陪鲤 Email         : vip_13031075266@163.com Date          : 2021.01.23 Copyright : 未 ...

  9. leetcode刷题目录

    leetcode刷题目录 1. 两数之和 2. 两数相加 3. 无重复字符的最长子串 4. 寻找两个有序数组的中位数 5. 最长回文子串 6. Z 字形变换 7. 整数反转 8. 字符串转换整数 (a ...

随机推荐

  1. spring xml头文件xmlns和xsi的意思

    在spring的配置中,总能看见如下的代码: <beans xmlns="http://www.springframework.org/schema/beans" xmlns ...

  2. 数据库类型空间效率探索(四)-tinyint与enum与set

    mysql> select count(*) from userinfo;+----------+| count(*) |+----------+| 115597 |+----------+1 ...

  3. 无法打开工作组信息文件中的表 'MSysAccounts',一个十分搞笑的解决方法

    问题提出:从access97导出一个mdb到access2000 为了程序使用命名为system.mdb,后改名为system.dat 在c#中打开,出现 无法打开工作组信息文件中的表 'MSysAc ...

  4. Android笔记:intent

    一.显式intent如下:(1)在intent构造函数传入两个activity文件名Intent intent = new Intent(FirstActivity.this, SecondActiv ...

  5. 第十章 优先级队列 (xa1)左式堆:结构

  6. 第四章 栈与队列(c3)栈应用:栈混洗

  7. 忘记root密码,怎么办

    当前账户拥有sudo权限,可以通过sudo passwd root来重置root密码.

  8. Date 时间 日期 常用方法函数

    转载自https://www.cnblogs.com/lcngu/p/5154834.html 一.java.util.Date对象用来表示时间,基本方法如下: Date mDate = new Da ...

  9. 20 【python】入门指南:常用数据结构

    Python内置了三种高级数据结构:list,tuple,dict list:数组,相同类型的元素组成的数组 tuple:元组,相同类型的元素组成的数组,但是这里有限定条件(长度是固定的,并且值也是固 ...

  10. C++编译中的内存分配

    一个由 C/C++ 编译的程序占用的内存分为以下五个部分 代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的. 数据区:存放已初始化的全局变量.静态变量(全局和局部).常量数据. BBS区 ...