力扣-160.相交链表
题目描述
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
图示两个链表在节点 c1 开始相交:
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须 保持其原始结构 。
class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode *p1=headA;ListNode *p2=headB;while (p1!=p2){if(p1!= nullptr){p1=p1->next;} else{p1=headB;}if(p2!= nullptr){p2=p2->next;} else{p2=headA;}}return p1;}
};
小结:链表题好久没做了,从这里重新回忆起来链表的内容,这道题思路很巧妙,如图(来自力扣题解)第一个指针p1走a+b-c,第二个指针走b+a-c,如果有公共结点,那么按照这种遍历方法一定会重合