判断两个链表是否相交,及其第一个公共交点
2017-10-11 17:06
507 查看
输入两个链表,找出它们的第一个公共结点。
算法思路:若两个链表相交,则从交点开始连个链表的交点都相同。
算法思路:若两个链表相交,则从交点开始连个链表的交点都相同。
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { ListNode *p1=pHead1; ListNode *p2=pHead2; int len1=0,len2=0,diff=0; //遍历第一个链表 while(p1!=NULL){ p1=p1->next; len1++; } //遍历第二个链表 while(p2!=NULL){ p2=p2->next; len2++; } //判断两个链表的长度,找出长度比较大的链表 if(len1>len2){ diff=len1-len2; p1=pHead1; p2=pHead2; } else{ diff=len2-len1; p1=pHead2; p2=pHead1; } //让长度比较大的链表先走长度差步数 for(int i=0;i<diff;i++){ p1=p1->next; } //两个链表比较,若两个节点相同,则为两个链表的交点 while(p1!=NULL && p2!=NULL){ if(p1==p2) break; p1=p1->next; p2=p2->next; } return p1; } };
相关文章推荐
- 判断两个链表是否相交并且返回第一个交点
- 判断两个链表是否相交,若相交,求第一个交点
- 两个单向链表,判断它们是否相交,若相交,找出它们的第一个公共的结点
- 已知有两个链表,判断它们是否相交,若相交求其第一个公共节点
- 判断两个链表是否相交;查找两个链表的第一个公共节点;头插法建链表(补充)
- 判断两个链表是否相交,如果相交如何找到第一个相交结点。
- 判断两个带环链表是否相交,并求出第一个相交点
- 判断两个链表是否相交,若相交,求交点,若带环呢/fork继承问题
- 判断两个链表是否相交,若相交,求交点
- 1)两链表的第一个公共结点 2)判断两链表是否相交
- 如何判断两个单向链表是否有相交,并找出交点 (转)
- 判断两个链表是否相交及获得相交的第一个节点
- 如何判断两个单向链表是否有相交,并找出交点
- [LeetCode] 判断两个链表是否有公共节点并返回第一个公共节点
- 判断两个链表是否有公共节点并返回第一个公共节点
- 判断两个链表是否相交,若相交,求交点:1.不带环。2.有可能带环
- 判断两个链表是否相交并找出交点
- 链表是否存在环及环入口点、两个链表是否相交、相交链表的第一个公共结点
- 百度笔试算法第二题:如何判断两个单向链表是否有相交,并找出交点
- 判断两个链表是否相交,若相交,求交点。(假设链表不带环)(C语言)