160. 相交链表
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目分析
难点:两条链表之间的节点无法对应。要通过某种方法让p1和p2同时到达相交点c1。
步骤:让p1遍历完a链表遍历b链表,p2遍历完b链表遍历a链表。
可能出现的情况
- 有相交:
一直遍历到p1和p2相等。 - 无相交:
p1 p2指向空。
/**
* 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) {
ListNode* p1 = headA;
ListNode* p2 = headB;
while(p1 != p2){
if(p1){
p1 = p1->next;
}else{
p1 = headB;
}
if(p2){
p2 = p2->next;
}else{
p2 = headA;
}
}
return p1;
}
};