(三)剑指offer35 两个链表的第一个公共节点
程序员文章站
2022-07-03 19:18:55
...
思路:
- 首先遍历两个链表 求出两个链表的长度len1、len2;以及长度差dis;
- 让长的为list1 短的为list2; list1 走dis步;
- 然后list1 list2 同时走 当list1==list2 的时候找到这个公共节点;
代码:
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2)
{
if(pHead1==nullptr||!pHead2)
return nullptr;
ListNode *p1=pHead1;
ListNode *p2=pHead2;
int len1=0,len2=0;
while(p1)
{
len1++;
p1=p1->next;
}
while(p2)
{
len2++;
p2=p2->next;
}
int dis=len1-len2;
if(dis>0)
{
p1=pHead1;
p2=pHead2;
}
else
{
dis=0-dis;
p1=pHead2;
p2=pHead1;
}
while(dis-->0)
p1=p1->next;
while(p1&&p2)
{
if(p1==p2)
break;
p1=p1->next;
p2=p2->next;
}
return p1;
}
};
上一篇: 交换两个变量的值
下一篇: C语言小算法集锦---交换两个变量的值
推荐阅读
-
leetcode 160剑指offer面试题52. 两个链表的第一个公共节点(python3)
-
《剑指offer》-- 两个链表的第一个公共结点、链表中环的入口结点、删除链表中的重复结点
-
剑指offer两个面试案例 把字符串转换成整数 树中两个节点的最低公共祖先
-
剑指offer-49.树中两个节点的最低公共祖先
-
剑指offer——面试题37:两个链表的第一个公共结点
-
[剑指offer-68]树中两个节点的最低公共祖先
-
剑指offer-树中两个节点的最低公共祖先
-
(三)剑指offer35 两个链表的第一个公共节点
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
双指针-链表-面试题52. 两个链表的第一个公共节点