题解 | #两个链表的第一个公共结点#

两个链表的第一个公共结点

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 
}
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务