有向路径检查 牛客网 程序员面试金典 C++ Python

  • 题目描述
  • 对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径。
  • 给定图中的两个结点的指针DirectedGraphNode* a, DirectedGraphNode* b(请不要在意数据类型,图是有向图),请返回一个bool,代表两点之间是否存在一条路径(a到b或b到a)。

C++

class Path {
public:bool checkPath(UndirectedGraphNode* a, UndirectedGraphNode* b){return check(a,b) || check(b,a);}bool check(UndirectedGraphNode* a, UndirectedGraphNode* b){if (NULL == a || NULL == b) return false;if (a == b) return true;map<UndirectedGraphNode*, bool> dict;queue<UndirectedGraphNode*> que;que.push(a);while(!que.empty()){UndirectedGraphNode* ptr = que.front();dict[ptr] = true;for(int i = 0; i<ptr->neighbors.size();i++){if((ptr->neighbors)[i] == b) return true;if(ptr->neighbors[i] && dict[ptr->neighbors[i]]!=true)que.push((ptr->neighbors)[i]);}que.pop();}return false;}
};

Python

class Path:
#run:321ms memory:5860kdef checkPath(self, a, b):v1, v2 = set(), set()return self.dfs(v1, a, b) or self.dfs(v2, b, a)def dfs(self,v, t, end):if t == end:return Trueif t in v:return Falsev.add(t)for x in t.neighbors:if self.dfs(v, x, end):return Truereturn False

有向路径检查 牛客网 程序员面试金典 C++ Python相关推荐

  1. 平衡二叉树检查 牛客网 程序员面试金典 C++ Python

    平衡二叉树检查 牛客网 程序员面试金典 C++ Python 题目描述 实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1. 给定指向树根结点的指针T ...

  2. 回文链表 牛客网 程序员面试金典 C++ Python

    回文链表 牛客网 程序员面试金典  C++ Python 题目描述 请编写一个函数,检查链表是否为回文. 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文. 测试样例 ...

  3. 原串反转 牛客网 程序员面试金典 C++ Python

    原串反转 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniS ...

  4. 空格替换 牛客网 程序员面试金典 C++ Python

    空格替换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实 ...

  5. 集合栈 牛客网 程序员面试金典 C++ Python

    集合栈 牛客网 程序员面试金典 C++ Python 题目描述 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈.该数据结构应支持与普通 ...

  6. 双栈排序 牛客网 程序员面试金典 C++ Python

    双栈排序 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中. ...

  7. 整数转化 牛客网 程序员面试金典 C++ Python

    整数转化 牛客网 程序员面试金典 C++ Python 题目描述 编写一个函数,确定需要改变几个位,才能将整数A转变成整数B. 给定两个整数int A,int B.请返回需要改变的数位个数. 测试样例 ...

  8. 确定字符互异 牛客网 程序员面试金典 C++ Python

    确定字符互异 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniStri ...

  9. 无缓存交换 牛客网 程序员面试金典 C++ Python

    无缓存交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值. 给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回 ...

最新文章

  1. 【廖雪峰python入门笔记】list_按照索引访问
  2. 全球最权威的区块链行业报告
  3. class多项式(链表实现)
  4. 经典的 Fork 炸弹解析
  5. mysql insert 语句优化_分享insert into语句优化的小技巧
  6. 【算法】常用的排序方法
  7. 随想录(无均衡负载的smp os设计)
  8. [QT入门篇]编程基础知识
  9. johnson算法 java_Johnson-trotter 算法,一种高效的全排序算法的java实现
  10. C语言show用法,show的用法和例句
  11. 数字逻辑课程设计--数字钟的设计(quartus ii)(内附源代码和实习报告以及6篇实习日志)
  12. 使用Qt控制鼠标自动点击屏幕上某一点
  13. hⅰgh怎么读音发音英语_英语读音
  14. SEM医械研发:常见医用塑料种类、特性与选用知识汇总
  15. 2019-6-2 第2套试卷中的生词(02)
  16. Hulu 2022春季校园招聘来啦
  17. iOS 导航栏下拉菜单框
  18. edg击败we视频_LOL2019德杯EDG vs WE第五局比赛视频回放 EDG让二追三晋级四强
  19. kafka监控获取logSize, offset, lag等信息
  20. 【写论文用到的几个偷懒的网站和软件】

热门文章

  1. 全景视频拼接关键技术
  2. python中实现五行旺衰的判断
  3. 如何在excel中创建斐波那契数列
  4. JAVA新手入门06~MYSQL提高篇2
  5. java身份证验证代码IdcardUtils.java分享
  6. 全程带阻:记一次授权网络攻防演练(上)
  7. 异动分析--基础指标监控及查因思路
  8. Java使用ffmpeg音视频分离
  9. Binary Search(二分搜索)
  10. 聚合支付:关于支付安全的思考(一)