# 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
while headA!=headB:
a=headB if a==None else a.next
b=headA if b==None else b.next
return headA
if not headA or not headB:
return None
a,b=headA,headB
m=self.getSize(a)
n=self.getSize(b)
if m<n:
return self.getIntersectionNode(headB, headA)
else:
for i in range(m-n):
a=a.next
while a!=b:
a=a.next
b=b.next
return a
def getSize(self,head):
count=0
while head:
count+=1
return count
"""
curA,curB = headA,headB
lenA,lenB = 0,0
while curA is not None:
lenA += 1
curA = curA.next
while curB is not None:
lenB += 1
curB = curB.next
curA,curB = headA,headB
if lenA > lenB:
for i in range(lenA-lenB):
curA = curA.next
elif lenB > lenA:
for i in range(lenB-lenA):
curB = curB.next
while curB != curA:
curB = curB.next
curA = curA.next
return curA
# 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
while headA!=headB:
a=headB if a==None else a.next
b=headA if b==None else b.next
return headA
if not headA or not headB:
return None
a,b=headA,headB
m=self.getSize(a)
n=self.getSize(b)
if m<n:
return self.getIntersectionNode(headB, headA)
else:
for i in range(m-n):
a=a.next
while a!=b:
a=a.next
b=b.next
return a
def getSize(self,head):
count=0
while head:
count+=1
return count
"""
curA,curB = headA,headB
lenA,lenB = 0,0
while curA is not None:
lenA += 1
curA = curA.next
while curB is not None:
lenB += 1
curB = curB.next
curA,curB = headA,headB
if lenA > lenB:
for i in range(lenA-lenB):
curA = curA.next
elif lenB > lenA:
for i in range(lenB-lenA):
curB = curB.next
while curB != curA:
curB = curB.next
curA = curA.next
return curA