160链表-相交链表
Posted 孤注一掷 、
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了160链表-相交链表相关的知识,希望对你有一定的参考价值。
题目
思路
是指针相同,先求出两个链表的长度以及差值,让curA移动到和curB末尾对齐的位置,然后就可以遍历比较是否相同
代码:
/**
* 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* curA = headA;
ListNode* curB = headB;
int lenA = 0,lenB = 0;
//求链表A的长度
while(curA != NULL)
lenA++;
curA = curA->next;
//求链表B的长度
while(curB != NULL)
lenB++;
curB = curB->next;
curA = headA;
curB = headB;
//让curA成为最长链表的头lenA为其长度
if(lenB > lenA)
swap(lenA, lenB);
swap(curA,curB);
//求长度差
int gap = lenA - lenB;
//让链表A和B的末位置对齐
while(gap--)
curA = curA->next;
//遍历curA和curB,遇到相同则直接返回
while(curA != NULL)
if(curA == curB)
return curA;
curA = curA->next;
curB = curB->next;
return NULL;
;
以上是关于160链表-相交链表的主要内容,如果未能解决你的问题,请参考以下文章