zoukankan      html  css  js  c++  java
  • 相交链表-基于Go

    • 一般思路
      • 先遍历A链表,记录所有点
    • 再遍历B链表,若已经在记录中存在则返回该节点.
    /**
     * Definition for singly-linked list.
     * type ListNode struct {
     *     Val int
     *     Next *ListNode
     * }
     */
    type void struct{}
    
    func getIntersectionNode(headA, headB *ListNode) *ListNode {
        if headA==nil||headB==nil{
            return nil
        }
    
        var nodes = make(map[*ListNode]void)
        for headA!=nil{
            _, ok := nodes[headA]
            // 说明node不经存在
            if !ok{
                nodes[headA] = void{}
            }
            headA = headA.Next
        }
        for headB!=nil{
            _, ok := nodes[headB]
            // 说明node已经存在
            if ok{
                return headB
            }
            headB = headB.Next
        }
        return nil
    }
    
    • 分别计算链长度,链表头移动到同一起点,同时遍历,相同则相交
    /**
     * Definition for singly-linked list.
     * type ListNode struct {
     *     Val int
     *     Next *ListNode
     * }
     */
    
    func getIntersectionNode(headA, headB *ListNode) *ListNode {
        if headA==nil||headB==nil{
            return nil
        }
    
        var lenA = 0
        var lenB = 0
        // 分别计算链表长度 
        for p := headA; p!=nil; p=p.Next{
            lenA++
        }
        for p := headB; p!=nil; p=p.Next{
            lenB++
        }
    
        // 将链表头移动到同一起点
        if lenA>=lenB{
            for i:=0;i<lenA-lenB;i++{
                headA = headA.Next
            }
        }else{
            for i:=0;i<lenB-lenA;i++{
                headB = headB.Next
            }
        }
    
        // 同时遍历,相等则相交
        for headA!=nil{
            if headA==headB{
                return headA
            }
            headA = headA.Next
            headB = headB.Next
        }
        
        return nil
    }
    
  • 相关阅读:
    Root resource classes
    web.xml文件的作用
    Mac OS X 快捷键(完整篇) 转载
    Eclipse快捷键大全(转载)
    mac os 下如何清除/切换svn eclipse插件的用户
    N-Queens II
    接口是永远不能被实例化的
    Chpater 10: Sorting
    Java 理论和实践: 了解泛型
    EMQ X + ClickHouse 实现物联网数据接入与分析
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14632410.html
Copyright © 2011-2022 走看看