编写一个程序,找到两个单链表相交的起始节点。
如下面的两个链表:
解法1.双指针法
思路: 两个指针分别从两个head开始,直至达到末尾,然后从另一个head开始,当两指针相遇,即为相交节点
# 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 = headA
q = headB
while p != q:
p = headB if p == None else p.next
q = headA if q == None else q.next
return p