题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
func FindFirstCommonNode( pHead1 *ListNode , pHead2 *ListNode ) *ListNode {
// write code here
size1 := ListSize(pHead1)
size2 := ListSize(pHead2)
var diff int
var long, short *ListNode
if size1 >= size2 {
diff = size1 - size2
long = pHead1
short = pHead2
} else {
diff = size2 - size1
long = pHead2
short = pHead1
}
for i := 0; i < diff; i++ {
long = long.Next
}
for long != nil && short != nil {
if long == short {
return long
}
long = long.Next
short = short.Next
}
return nil
}
func ListSize(head *ListNode) int {
var size int = 0
find := head
for find != nil {
size++
find = find.Next
}
return size
}