<h3><a title="题目描述" href="https://leetcode-cn.com/problems/intersection-of-two-linked-lists/">题目描述</a></h3>


<h4>解法1:</h4>
<pre class="EnlighterJSRAW" data-enlighter-language="null"># Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def getIntersectionNode(self, headA, headB):
"""
:type head1, head1: ListNode
:rtype: ListNode
"""
p, q = headA, headB
while(p != q):
p = p.next if p else headB
q = q.next if q else headA
return p</pre>
<h4>解法2:</h4>
<pre class="EnlighterJSRAW" data-enlighter-language="null"># Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def getIntersectionNode(self, headA, headB):
"""
:type head1, head1: ListNode
:rtype: ListNode
"""
visited = set()
while headA:
visited.add(headA)
headA = headA.next
while headB:
if headB in visited:
return headB
headB = headB.next
return None</pre>
#### Note
- 解法1是通过“增加”来消除长度差

- 解法2是通过字典实现,效率更高。
Leetcode160 相交链表