码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode_160_Intersection of Two Linked Lists

时间:2015-02-07 17:32:48      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:链表

描述:

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.

Credits:
Special thanks to @stellari for adding this problem and creating all test cases.

思路:

暴力解法,将第一个链表的所有结点放进HashSet,然后看第二个链表从头开始的第一个存在HashSet中的元素就是两个链表相交的地方。
方法不够好,题目说的空间复杂度最好为O(1)

代码:

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
		if(headA==null||headB==null)
			return null;
        ListNode tempListNode=null;
        HashSet<ListNode>set=new HashSet<ListNode>();
        ListNode pListNode=headA;
        while(pListNode!=null)
        {
        	set.add(pListNode);
        	pListNode=pListNode.next;
        }
        pListNode=headB;
        while(pListNode!=null)
        {
        	if(set.contains(pListNode))
        	{
        		tempListNode=pListNode;
        		break;
        	}else
        	{
        		pListNode=pListNode.next;
        	}
        }
        return tempListNode;
    }

结果:

技术分享

leetcode_160_Intersection of Two Linked Lists

标签:链表

原文地址:http://blog.csdn.net/mnmlist/article/details/43604063

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!