052_相交链表
知识点:链表
LeetCode第一百六十题:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/submissions/
语言:GoLang
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
// 题解区大神的优秀代码
func getIntersectionNode(headA, headB *ListNode) *ListNode {
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
}
// 自己想的解法,代码量较多,哈哈
func getIntersectionNode_(headA, headB *ListNode) *ListNode {
pA, pB := headA, headB
// 找出长度差距
for pA != nil && pB != nil {
if pA == pB {
return pA
}
pA = pA.Next
pB = pB.Next
}
// 让较长的那个挪动到长度相同的点
if pA != nil {
tmpA := pA
pA = headA
for tmpA != nil {
pA = pA.Next
tmpA = tmpA.Next
}
pB = headB
}else if pB != nil {
tmpB := pB
pB = headB
for tmpB != nil {
pB = pB.Next
tmpB = tmpB.Next
}
pA = headA
}
// 出发,直到在一起
for pA != nil && pB != nil {
if pA == pB {
return pA
}
pA = pA.Next
pB = pB.Next
}
return nil
}

浙公网安备 33010602011771号