您的位置:首页 > 其它

两个链表的第一个公共节点

2018-01-16 18:58 190 查看

两个链表的第一个公共节点

一、题目要求

输入两个链表,找出它们的第一个公共结点。

二、我的思路

定义两个指针分别指向两个链表的头结点,分别让这两个指针以相同的速度遍历链表。如果指针遍历到链表结尾,则将其指向对方链表的头结点来缓冲两个链表的头指针到第一个公共节点的长度之差。注意,如果两个链表有第一个公共节点,则剩余的节点均为公共节点。

三、我的代码

/*
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, *p2 = pHead2;
while(p1 != p2){
p1 = (p1 == NULL) ? pHead2 : p1->next;
p2 = (p2 == NULL) ? pHead1 : p2->next;
}
return p1;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: