如何将找出链表公共结点问题转化为长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计228个文字,预计阅读时间需要1分钟。
力扣接链表+思路:先求出两个链表的长度差+同时走,第一个地址相同的点是交点+代码:/* Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */
力扣链接
思路:
先求出两个链表的长度差
长链表先走差距步
同时走,第一个地址相同的是交点
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
struct ListNode* tailA = headA,* tailB = headB;
int lenA = 1, lenB = 1;
while(tailA->next)
{
tailA = tailA->next;
++lenA;
}
while(tailB->next)
{
tailB = tailB->next;
++lenB;
}
if(tailA != tailB)
{
return NULL;
}
int gap = abs(lenA - lenB);
struct ListNode* longList = headA,* shortList = headB;
if(lenA<lenB)
{
longList = headB;
shortList = headA;
}
while(gap--)
{
longList= longList->next;
}
while(longList !=shortList)//比较的是地址
{
longList = longList->next;
shortList = shortList->next;
}
return longList;
}
本文共计228个文字,预计阅读时间需要1分钟。
力扣接链表+思路:先求出两个链表的长度差+同时走,第一个地址相同的点是交点+代码:/* Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */
力扣链接
思路:
先求出两个链表的长度差
长链表先走差距步
同时走,第一个地址相同的是交点
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
struct ListNode* tailA = headA,* tailB = headB;
int lenA = 1, lenB = 1;
while(tailA->next)
{
tailA = tailA->next;
++lenA;
}
while(tailB->next)
{
tailB = tailB->next;
++lenB;
}
if(tailA != tailB)
{
return NULL;
}
int gap = abs(lenA - lenB);
struct ListNode* longList = headA,* shortList = headB;
if(lenA<lenB)
{
longList = headB;
shortList = headA;
}
while(gap--)
{
longList= longList->next;
}
while(longList !=shortList)//比较的是地址
{
longList = longList->next;
shortList = shortList->next;
}
return longList;
}

