package LinkedList
type ListNode struct {
Val int
Next *ListNode
}
func getIntersectionNode(headA, headB *ListNode) *ListNode {
curA, curB := headA, headB
lenA, lenB := 0, 0
for ; curA != nil; curA = curA.Next {
lenA++
}
for ; curB != nil; curB = curB.Next {
lenB++
}
curA, curB = headA, headB
if lenA > lenB {
for i := 0; i < lenA-lenB; i++ {
curA = curA.Next
}
} else {
for i := 0; i < lenB-lenA; i++ {
curB = curB.Next
}
}
for curA != curB {
curA = curA.Next
curB = curB.Next
}
return curA
}