/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ #include <list> class Solution { public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { ListNode* p1 = pHead1; ListNode* p2 = pHead2; while(p1!=p2) { p1 = p1==nullptr?pHead2:p1->next; p2 = p2==nullptr?pHead1:p2->next; } return p1; } };
一个到头就到另一个链表
最后两指针必定相等
要么为空, 要么为某个节点