【面试题】剑指Offer-37-求两个链表的第一个公共节点
2017-04-17 18:43
483 查看
题目概述
解题思路
首先,分别求出两个链表L1,L2的长度L1_length,L2_length
比较L1_length,L2_length的大小,并求出差值的绝对值K
定义两个指针cur1,cur2,分别指向两个链表
令长度较长的链表先走K步
然后同时走,直到两个指针指向的位置相同停止
注意:题目要求的是求两个链表的第一个公共节点,这里我们假设已经确定两条链表是相交的了
代码实现
int ListLength(ListNode* phead){
int count = 0;
ListNode* cur = phead;
while (cur)
{
count++;
cur = cur->next;
}
return count;
}
//假定两条链表是一定相交的
ListNode* FindCommonNode(ListNode** phead1,ListNode** phead2)
{
int l1_length = ListLength(*phead1);
int l2_length = ListLength(*phead2);
ListNode* cur1 = *phead1;
ListNode* cur2 = *phead2;
if (l1_length > l2_length)
{
int tmp = l1_length - l2_length;
while (tmp--)
cur1 = cur1->next;
}
if (l1_length < l2_length)
{
int tmp = l2_length - l1_length;
while (tmp--)
cur2 = cur2->next;
}
while (cur1 != cur2)
{
cur1 = cur1->next;
cur2 = cur2->next;
}
return cur1;
}
相关文章推荐
- [剑指offer][面试题37]两个链表的第一个公共节点
- 【剑指Offer学习】【面试题37:两个链表的第一个公共结点】
- 剑指offer 37:求两个链表的第一个公共节点
- [剑指Offer 37] 两个链表的第一个公共节点(Python)
- 剑指offer 37 - 两个链表的第一个公共节点
- 剑指Offer面试题37(Java版):两个链表的第一个公共结点
- 找到两个链表的第一个公共节点 37--剑指offer
- 【剑指offer】面试题37:两个链表的第一个公共结点
- 剑指offer 面试题37 两个链表的第一个公共结点
- 【剑指offer】面试题37:两个链表的第一个公共结点
- 剑指offer——面试题37:两个链表的第一个公共结点
- 【剑指offer】5.3时间效率与空间效率的平衡——面试题37:两个链表的第一个公共结点
- 剑指offer 面试题37 两个链表的第一个公共结点
- 剑指offer--面试题37:两个链表的第一个公共结点
- 【剑指Offer学习】【面试题37:两个链表的第一个公共结点】
- 【剑指offer】面试题37:两个链表的第一个公共结点
- 剑指Offer 37题 两个链表的第一个公共节点 Java版
- 剑指Offer----面试题37:两个链表的第一个公共结点
- 【剑指offer】面试题52:两个链表的第一个公共节点
- 剑指offer-面试题37-两个链表的第一个公共结点