160.相交链表
所谓相交就是链表中是否有相同元素
那么正常枚举的话,如果链表长度不同,就不适用了
但是细细想一下,单个链表长度不同,但是两个链表总长度是一定的
这样问题就好解决了
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
if (headA == NULL || headB == NULL) return NULL;
struct ListNode *pA = headA, *pB = headB;
while (pA != pB) {
pA = pA == NULL ? headB : pA->next;
pB = pB == NULL ? headA : pB->next;
}
return pA;
}
另一种写法
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
struct ListNode *p = headA, *q = headB;
if (!p || !q) return NULL;
while (p != q) {
p = (p ? p->next : headB);
q = (q ? q->next : headA);
}
return p;
}