160. 相交链表
哈希表
func getIntersectionNode(headA, headB *ListNode) *ListNode {
hmap := make(map[*ListNode]struct{})
for headA != nil {
hmap[headA] = struct{}{}
headA = headA.Next
}
for headB != nil {
if _,ok := hmap[headB]; ok {
return headB
}
headB = headB.Next
}
return nil
}
双指针,实现空间复杂度O(1)
func getIntersectionNode(headA, headB *ListNode) *ListNode {
if headA == nil || headB == nil {
return nil
}
pa, pb := headA, headB
for pa != pb {
if pa == nil {
pa = headB
} else {
pa = pa.Next
}
if pb == nil {
pb = headA
} else {
pb = pb.Next
}
}
return pa
}