两个链表的第一个公共结点_牛客题霸_牛客网 (nowcoder.com)


1. 定义两个指针分别指向两个链表的开头
2. 依次遍历如图所示,遍历完该链表后再从另一个链表开始遍历 直到相遇即为第一个公共结点
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
if(pHead1 == nullptr || pHead2 == nullptr) return nullptr;
ListNode* n1 = pHead1, * n2 = pHead2;
while(n1 != n2){
n1 = n1 ==nullptr ? pHead2:n1->next;
n2 = n2 ==nullptr ? pHead1:n2->next;
}
return n1;
}
};
该文章介绍了一种方法来找到两个链表的第一个公共节点。通过定义两个指针,分别从两个链表的头部开始遍历,当指针相遇时,即找到了公共节点。如果遍历过程中某链表结束,指针会转向另一个链表继续遍历。
2629

被折叠的 条评论
为什么被折叠?



