面试题 02.07. 链表相交 

//面试题 02.07. 链表相交
func getIntersectionNode(headA, headB *ListNode) *ListNode {
headA1:=headA
var alen,blen int
for headA1!=nil{
headA1=headA1.Next
alen++
}
headB1:=headB
for headB1!=nil {
headB1=headB1.Next
blen++
}
if blen>=alen{
ba:=blen-alen
headB2:=headB
headA2:=headA
for headB2!=nil{
if headB2==headA2{
return headB2
}
if ba<=0{
headA2=headA2.Next
}
headB2=headB2.Next
ba--
}
}else{
al:=alen-blen
headB2:=headB
headA2:=headA
for headA2!=nil{
if headB2==headA2{
return headB2
}
if al<=0{
headB2=headB2.Next
}
headA2=headA2.Next
al--
}
}
return nil
}

 142. 环形链表 II

//142. 环形链表 II
func detectCycle(head *ListNode) *ListNode {
slow, fast := head, head
for fast!=nil && fast.Next!=nil{
slow=slow.Next
fast=fast.Next.Next
if slow==fast{
for slow!=head{
slow=slow.Next
head=head.Next
}
return slow
}
}
return nil
}