自学内容网 自学内容网

[算法题]两个链表的第一个公共结点

题目链接: 两个链表的第一个公共结点

图示:

两个链表如果长度一致, 那么两人同时一人走一步, 如果存在公共结点, 迟早会相遇, 但是如果长度不一致单存在公共结点, 两人同时一人走一步不会相遇, 此时定义两个变量, node1 和 node2, 这两个变量分别从 x1 和 x2 开始走, 当其走完原本的路径后又重新走对方走的路径, 这样存在公共结点两个变量迟早会相遇, 不存在公共结点的话两个结点也会走到空并相遇返回空, 题解代码如下:

class Solution 
{
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) 
{
ListNode* node1 = pHead1;
ListNode* node2 = pHead2;

while(node1 != node2)
{
node1 = node1 ? node1->next : pHead2;
node2 = node2 ? node2->next : pHead1;
}
return node1;
    }
};


原文地址:https://blog.csdn.net/m0_62714628/article/details/140575271

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!