LeetCode : 160. Intersection of Two Linked Lists

原创 2016年08月29日 17:27:11
问题描述:

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.


Notes:

  • If the two linked lists have no intersection at all, return null.
  • The linked lists must retain their original structure after the function returns.
  • You may assume there are no cycles anywhere in the entire linked structure.
  • Your code should preferably run in O(n) time and use only O(1) memory.

分析 :

思路1:利用栈后进先出的特性,将链表元素放入栈,然后从尾开始比较,会用O(n)的空间复杂度

思路2:先求出两个链表的长度lengthA、lengthB,然后长的链表先后移使之与短的长度相同,然后开始便利,找到相同的节点。

AC代码如下:

 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB)
    {
        ListNode * res = NULL;
        int lengthA = 0;
        int lengthB = 0;
        ListNode *a,*b;
        a = headA;
        b = headB;
        while(a != NULL)
        {
            lengthA++;
            a = a->next;
        }
        while(b != NULL)
        {
            lengthB++;
            b = b->next;
        }
        a = headA;
        b = headB;
        int diff = abs(lengthA - lengthB);
        if(lengthA > lengthB)
        {
            for(int i = 0;i < diff;i++)
                a = a->next;
        }
        if(lengthA < lengthB)
        {
            for(int i = 0;i < diff;i++)
                b = b->next;
        }
        while(a!=NULL && b!= NULL)
        {
            if(a == b)
            {
                res = a;
                break;
            }
            a = a->next;
            b = b->next;
        }
        return res;
        
    }


版权声明:本文为博主原创文章,未经博主允许不得转载。

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
  • 1857

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

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

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
  • 2760

【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
  • 3400

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
  • 413

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

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

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
  • 1309

【leetcode 两个链表的交集点】Intersection of Two Linked Lists

leetcode上最新的面试题目,求两个链表的交集,难度为easy,附个人理解解析以及题目作者的英文解析。...
  • u012162613
  • u012162613
  • 2014年11月28日 00:15
  • 8393

LeetCode *** 160. Intersection of Two Linked Lists

题目: Write a program to find the node at which the intersection of two singly linked lists begins....
  • treeshy
  • treeshy
  • 2016年04月09日 18:15
  • 105

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
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode : 160. Intersection of Two Linked Lists
举报原因:
原因补充:

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