思路:
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;
}
};
Every step of barefoot running deserves to be recorded