有向路径检查 牛客网 程序员面试金典 C++ Python
有向路径检查 牛客网 程序员面试金典 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相关推荐
- 平衡二叉树检查 牛客网 程序员面试金典 C++ Python
平衡二叉树检查 牛客网 程序员面试金典 C++ Python 题目描述 实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1. 给定指向树根结点的指针T ...
- 回文链表 牛客网 程序员面试金典 C++ Python
回文链表 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,检查链表是否为回文. 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文. 测试样例 ...
- 原串反转 牛客网 程序员面试金典 C++ Python
原串反转 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniS ...
- 空格替换 牛客网 程序员面试金典 C++ Python
空格替换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实 ...
- 集合栈 牛客网 程序员面试金典 C++ Python
集合栈 牛客网 程序员面试金典 C++ Python 题目描述 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈.该数据结构应支持与普通 ...
- 双栈排序 牛客网 程序员面试金典 C++ Python
双栈排序 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中. ...
- 整数转化 牛客网 程序员面试金典 C++ Python
整数转化 牛客网 程序员面试金典 C++ Python 题目描述 编写一个函数,确定需要改变几个位,才能将整数A转变成整数B. 给定两个整数int A,int B.请返回需要改变的数位个数. 测试样例 ...
- 确定字符互异 牛客网 程序员面试金典 C++ Python
确定字符互异 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniStri ...
- 无缓存交换 牛客网 程序员面试金典 C++ Python
无缓存交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值. 给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回 ...
最新文章
- 【廖雪峰python入门笔记】list_按照索引访问
- 全球最权威的区块链行业报告
- class多项式(链表实现)
- 经典的 Fork 炸弹解析
- mysql insert 语句优化_分享insert into语句优化的小技巧
- 【算法】常用的排序方法
- 随想录(无均衡负载的smp os设计)
- [QT入门篇]编程基础知识
- johnson算法 java_Johnson-trotter 算法,一种高效的全排序算法的java实现
- C语言show用法,show的用法和例句
- 数字逻辑课程设计--数字钟的设计(quartus ii)(内附源代码和实习报告以及6篇实习日志)
- 使用Qt控制鼠标自动点击屏幕上某一点
- hⅰgh怎么读音发音英语_英语读音
- SEM医械研发:常见医用塑料种类、特性与选用知识汇总
- 2019-6-2 第2套试卷中的生词(02)
- Hulu 2022春季校园招聘来啦
- iOS 导航栏下拉菜单框
- edg击败we视频_LOL2019德杯EDG vs WE第五局比赛视频回放 EDG让二追三晋级四强
- kafka监控获取logSize, offset, lag等信息
- 【写论文用到的几个偷懒的网站和软件】