微软100题(7) 判断两链表是否相交
来源:互联网 发布:知乎清华五道口 编辑:程序博客网 时间:2024/06/15 01:49
题目:
给出两个单链表的头指针h1 h2,判断两个链表是否相交
思路:
1.如果两个链表都没有环:
如果相交:则尾结点一定一样
如果不相交,尾结点不一样
2.一个有环,一个无环,则一定不相交
3.两个都有环,
如果相交,则环为同一个环
如果不相交,则环不一样
首先需要判断是否有环
struct ListNode{int m_value;ListNode* m_pnext;}ListNode;bool JudgeCircle(ListNode* head){if(head == NULL) return false;ListNode* slow = head;ListNode* fast = head->m_pnext;while(slow && fast){slow = slow->m_pnext;fast = fast->m_pnext->m_pnext;if(slow == fast) return true;}return false;}然后,如果有环就需要找到环里面的一个结点,然后判断这个结点在不在另一个链表里
寻找一个环里的结点:
ListNode* FindOneNode(ListNode* head)//已经判断出链表有环{if(head == NULL) return NULL;ListNode* p1 = head;ListNode* p2 = head->m_pnext;while (p1 && p2){p1 = p1->m_pnext;p2 = p2->m_pnext->m_pnext;if(p1 == p2) return p1;}return NULL;}
判断该结点在不在另一个有环的链表里面
bool IsExistInList(ListNode* head2,ListNode* pNode){ListNode* p1 = head2;ListNode* p2 = head2->m_pnext;ListNode* pTemp = nullptr;while(p1 && p2){p1 = p1->m_pnext;p2 = p2->m_pnext->m_pnext;if(p1 == p2) {pTemp = p1;break;}}if(pNode == pTemp) return true;p1 = p1->m_pnext;while(p1!=pTemp){if(p1 == pNode) return true;p1 = p1->m_pnext;}return false;}
0 0
- 微软100题(7) 判断两链表是否相交
- 微软100题第7题(判断俩个链表是否相交)
- 微软面试100道之7 判断俩个链表是否相交
- (微软面试100题)判断两个链表是否相交
- 微软算法100道题------判断俩个链表是否相交
- 7、微软亚院之编程判断俩个链表是否相交
- 微软100题(23)判断正方形和圆形相交
- 判断两链表是否相交
- 判断两链表是否相交
- 判断两个链表是否相交 【微软面试100题 第七题】
- 微软面试100题系列---判断两个链表是否相交
- 算法面试100题——7.微软亚院之编程判断俩个链表是否相交
- 7 微软亚院之编程判断俩个链表是否相交,相交的首节点
- 第7题 微软亚院之编程判断俩个链表是否相交 给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交,并找出第一个相交结点。
- July大神微软等100题之第7题------判断两个链表相交(包含有无环),链表是否有环题目总结
- 【从零单排之微软面试100题系列】07之判断两个链表是否相交
- 7.微软亚院之编程判断俩个链表是否相交(如果需要求出俩个链表相交的第一个节点)
- 微软亚洲研究院面试编程题之判断两个链表是否相交
- Android 设计模式-单例模式
- shell脚本格式问题导致读取不到文件状态
- C++ 异常
- struts 2 值栈 存放数据
- 【数据结构】散列表
- 微软100题(7) 判断两链表是否相交
- Qt 实现多文档
- LeetCode:Median of two sorted array
- 《Thinking in UML》学习1——参与者与用例
- hdu 1198 Farm Irrigation
- Object_c基础——笔记整理2(干货)
- 解决Mac java.net Local host name unknown error的方法
- POJ 3744 Scout YYF 1(概率递推)
- ETL