1.题目描述:
输入两个链表,找出它们的第一个公共结点。
class Solution {
public:
ListNode* FindFirstCommonNode(ListNode* pHead1, ListNode* pHead2) {
/*参考大佬*/
if (pHead1==NULL||pHead2==NULL)
{
return NULL;
}
ListNode*p1 = pHead1;
ListNode*p2 = pHead2;
while (p1!=p2)
{
p1 = (p1 == NULL) ? pHead2 : p1->next;//第一趟走完走p2
p2 = (p2 == NULL) ? pHead1 : p2->next;//第一场走完走p1,到第一个相同点时,走过路径的长度相等,
}
return p1;
}
};
ps:参考大佬的解法,思想很妙,巧妙的解决了长度不一样的链表而不用遍历链表的长度,还有类似的题目是用两个指针步长不同找出是否为循环链表,