思路:
1.两个链表都是单链表,所以不存在环的情况
2.将两个链表的头分别开始遍历,一个链表遍历完后又遍历另一个链表,如果有相交,两次遍历必然会得到相交节点。
代码:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { auto p=headA,q=headB; while(p!=q) { if(p) p=p->next; else p=headB; if(q) q=q->next; else q=headA; } return p; } };