概述
编写一个程序,找到两个单链表相交的起始节点。
思路:给两个指针curA和curB同时从两个链表的起始位置开始比较,如果cur1和cur2两个字节的地址相同,则为交点,否则两个指针同时往下移动
b-a的节点个数 让长的先走b-a次 然后同时走.
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
//如果有一个为空则不相交
if(nullptr == headA || nullptr == headB)
return nullptr;
ListNode* curA = headA;
int countA = 1;//计数
while(curA->next)
{
countA++;
curA = curA->next;
}
ListNode* curB = headB;
int countB = 1;
while(curB->next)
{
countB++;
curB=curB->next;
}
//如果最后一个节点地址不相同,则不可能相交
if(curA != curB)
return nullptr;
curA = headA;
curB = headB;
int gap = countA-countB;
if(gap>0)
{
while(gap--)
curA = curA->next;
}
else
{
while(gap++)
curB = curB->next;
}
//从相同位置开始寻找
while(curA !=curB)
{
curA = curA->next;
curB = curB->next;
}
return curA;
}
};
最后
以上就是激情八宝粥为你收集整理的LeetCode||编写一个程序,找到两个单链表相交的起始节点。的全部内容,希望文章能够帮你解决LeetCode||编写一个程序,找到两个单链表相交的起始节点。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复