Easy-题目38:160. Intersection of Two Linked Lists

原创 2016年05月30日 20:28:45

题目原文:
Write a program to find the node at which the intersection of two singly linked lists begins.

For example, the following two linked lists:

A:          a1 → a2
                   ↘
                     c1 → c2 → c3
                   ↗            
B:     b1 → b2 → b3

begin to intersect at node c1.
题目大意:
求两个单链表的交点。
题目分析:
考研数据结构复习的时候见过此题,应该是链表处理的题目中比较经典的一道。解法是求出两个链表的长度,然后两个指针分别指向两个链表的头结点,先让较长的链表的指针走过差值的步数,这样两个指针距离尾节点的距离就相同了,让两个节点并行走直到遇到交点。
源码:(language:c)

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
    if(!headA||!headB)
        return NULL;
    struct ListNode *p;
    int lengtha,lengthb;
    for(p=headA,lengtha=0;p;p=p->next,lengtha++);
    for(p=headB,lengthb=0;p;p=p->next,lengthb++);

    if(lengtha>lengthb) {
        for(int i=0;i<lengtha-lengthb;i++)
            headA=headA->next;
    }
    else if (lengthb>lengtha) {
        for(int i=0;i<lengthb-lengtha;i++)
            headB=headB->next;
    }
    while(headA!=headB) {
        headA=headA->next;
        headB=headB->next;
    }
    return headA;
}

成绩:
32ms,beats 18.75%,众数32ms,78.91%
cmershen的碎碎念:
这道题比较经典,但如果不给出这个算法,自己是很难想到的。

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

LeetCode 160 — Intersection of Two Linked Lists(C++ Python)

题目:https://oj.leetcode.com/problems/intersection-of-two-linked-lists/ Write a program to find the n...
  • dragon_dream
  • dragon_dream
  • 2014年12月02日 20:59
  • 1851

leetcode 160: Intersection of Two Linked Lists

Intersection of Two Linked Lists Total Accepted: 8676 Total Submissions: 32571 Write a program to...
  • xudli
  • xudli
  • 2014年12月30日 03:17
  • 2755

LeetCode 160 Intersection of Two Linked Lists(链表相交)(Linked List)(*)

翻译写一个程序来找出两个单链表相交的开始处。例如,如下有两个链表:在节点c1处开始相交。批注: 如果两个链表根本没有相交,返回NULL。 在函数返回后链表必须保留原有的数据结构。 你可以假设在整个链结...
  • NoMasp
  • NoMasp
  • 2016年01月24日 09:26
  • 5076

160. Intersection of Two Linked Lists(python)

Write a program to find the node at which the intersection of two singly linked lists begins. For e...
  • qq_28119401
  • qq_28119401
  • 2016年09月18日 21:38
  • 404

[leetcode]Intersection of Two Linked Lists —— 熟悉python

好久没有耍代码了,手有点生,还有点痒,and 脑子有点锈。话说这个简单的东西,耍了我一个小时。 主要是最近很少碰代码。二是对python不熟悉,刚刚接触,但是顿时很热爱这个小蟒蛇。于是打算好好蹂躏它。...
  • ls1160
  • ls1160
  • 2014年12月11日 11:41
  • 1601

【LeetCode-面试算法经典-Java实现】【160-Intersection of Two Linked Lists(单链表的交集)】

【160-Intersection of Two Linked Lists(单链表的交集)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Write a program ...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月22日 06:45
  • 3379

LeetCode 160 :Intersection of Two Linked Lists

Write a program to find the node at which the intersection of two singly linked lists begins. For ...
  • sunao2002002
  • sunao2002002
  • 2015年05月14日 22:06
  • 1302

160. Intersection of Two Linked Lists。

Write a program to find the node at which the intersection of two singly linked lists begins.For exa...
  • Leafage_M
  • Leafage_M
  • 2017年09月19日 23:39
  • 236

160. Intersection of Two Linked Lists*

Write a program to find the node at which the intersection of two singly linked lists begins. F...
  • alwaystry
  • alwaystry
  • 2017年01月06日 23:46
  • 79

160. Intersection of Two Linked Lists

Write a program to find the node at which the intersection of two singly linked lists begins. F...
  • wusecaiyun
  • wusecaiyun
  • 2015年08月25日 12:57
  • 213
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Easy-题目38:160. Intersection of Two Linked Lists
举报原因:
原因补充:

(最多只允许输入30个字)