您的位置:首页 > Web前端

剑指Offer——两个链表的第一个公共结点

2017-11-01 09:05 337 查看
题目描述:

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

分析:

设置两个指针,分别从两个链表的头部开始往后遍历。

谁遍历完自己本身的,就从另一个链表开始遍历,这样大家到达第一个公共结点的时候便会相遇。

因为它们都走了它们没有公共部分的长度之和加上一个公共部分的长度。

代码:

1 /*
2 struct ListNode {
3     int val;
4     struct ListNode *next;
5     ListNode(int x) :
6             val(x), next(NULL) {
7     }
8 };*/
9 class Solution {
10 public:
11     ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
12         ListNode* p1 = pHead1;
13         ListNode* p2 = pHead2;
14         while(!(p1 == p2)) {
15             p1 = (p1 == NULL ? pHead2 : p1->next);
16             p2 = (p2 == NULL ? pHead1 : p2->next);
17         }
18         return p1;
19     }
20 };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: