题目
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
答案
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func getIntersectionNode(headA, headB *ListNode) *ListNode {
lenA := 0
lenB := 0
tmpA := headA
for tmpA != nil {
lenA++
tmpA = tmpA.Next
}
tmpB := headB
for tmpB != nil {
lenB++
tmpB = tmpB.Next
}
for lenA != lenB {
if lenA > lenB {
headA = headA.Next
lenA--
} else {
headB = headB.Next
lenB--
}
}
for headA != nil && headB != nil {
if headA == headB {
return headA
}
headA = headA.Next
headB = headB.Next
}
return nil
}