zoukankan      html  css  js  c++  java
  • JZ36 两个链表的第一个公共结点

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

    题目:输入两个链表,找出它们的第一个公共结点。

    思路:右对齐两个链表,如果两个链表有公共节点,则它们的形状必然是一个Y字形。

    长链表先走,实现右对齐,先假设这两个链表的长度相等,则我们可以同步遍历这两个链表,找到公共节点。现在有两个链表,我们可以先分别求齐长度得其差n,然后遍历长的那个链表n个节点,然后同步遍历这两个链表即可。hashmap存储遍历第一条链的节点,遍历另一条,寻找已经出现的key。

    func abs(x int) int {
        if x  < 0 {
            return -x
        }
        return x
    }
    func FindFirstCommonNode(pHead1, pHead2  *ListNode) *ListNode {
        if pHead1 == nil || pHead2 == nil {
            return nil
        }
        
        p1, p2 := pHead1, pHead2
        len1, len2 := 0, 0
        for p1 != nil {
            len1++
            p1 = p1.Next
        }
        for p2 != nil {
            len2++
            p2 = p2.Next
        }
        p1 = pHead1
        p2 = pHead2
        if len1 < len2 {
             p1 = pHead2
             p2 = pHead1
        }
        for i := 0;i < abs(len1 - len2);i++ {
            p1 = p1.Next
        }
        for p1 != nil && p2 != nil {
            if p1.Val == p2.Val {
                return p1
            } else {
                p1 = p1.Next
                p2 = p2.Next
            }
        }
        return nil
    }

     

  • 相关阅读:
    httpsqs消息队列
    Memcache 配置和使用
    nyist 68三点顺序
    nyist 67三角形面积
    rwkj 1363 正方形 长方形 三角形面积
    rwkj 1359 友元:两点距离
    rwkj 1357 矩形--面积-周长
    rwkj 1356 点与矩形
    rwkj 1354 圆周长与面积
    rwkj 1327 圆柱体体积
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14640933.html
Copyright © 2011-2022 走看看