Go语言每日一练——链表篇(八)

传送门

牛客面试笔试必刷101题 ----------------两个链表的第一个公共结点

题目以及解析

题目

解题代码及解析

解析

这一道题使用的还是双指针算法,我们先求出两个链表的长度差n,然后定义快慢指针,让快指针先走n步,最后快慢指针在同一点,该店就是我们的目标点

代码

go 复制代码
package main
import( 
    . "nc_tools"
)
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 
 * @param pHead1 ListNode类 
 * @param pHead2 ListNode类 
 * @return ListNode类
*/

func abs(a,b int) int{
    if a>b{
        return a-b
    }else{
        return b-a
    }
}

func FindFirstCommonNode( pHead1 *ListNode ,  pHead2 *ListNode ) *ListNode {
    l1,l2:=0,0
    dump,temp:=pHead1,pHead2
    for dump!=nil{
        dump=dump.Next
        l1++
    }
    for temp!=nil{
        temp=temp.Next
        l2++
    }
    var fast,slow *ListNode
    if l1>l2{
        fast,slow=pHead1,pHead2
    }else{
         fast,slow=pHead1,pHead2
    }
    for i:=0;i<abs(l1,l2);i++{
        fast=fast.Next
    }
    for fast!=nil{
        if fast!=slow{
            fast=fast.Next
            slow=slow.Next
        }else{
            break
        }
    }
    return slow
}

总结:

这题依旧是一道链表题,但是它很好的体现双指针思想的引用,大家可以简单的思考一下,用这道题来作为双指针算法的练手题

相关推荐
熊猫钓鱼>_>11 分钟前
2025反爬虫之战札记:从robots.txt到多层防御的攻防进化史
开发语言·c++·爬虫
牛十二1 小时前
mac-intel操作系统go-stock项目(股票分析工具)安装与配置指南
开发语言·前端·javascript
励志不掉头发的内向程序员1 小时前
从零开始的python学习——文件
开发语言·python·学习
恒森宇电子有限公司1 小时前
IP5326_BZ 支持C同口输入输出的移动电源芯片 2.4A的充放电电流 支持4LED指示灯
c语言·开发语言·单片机
THMAIL1 小时前
量化基金从小白到大师 - 金融数据获取大全:从免费API到Tick级数据实战指南
人工智能·python·深度学习·算法·机器学习·金融·kafka
纪元A梦1 小时前
贪心算法应用:数字孪生同步问题详解
java·算法·贪心算法
曼巴UE51 小时前
UE5.3 C++ 接口初步使用
开发语言·jvm·c++
纪元A梦1 小时前
贪心算法应用:食品生产线排序问题详解
算法·贪心算法
奔跑的石头_1 小时前
GO语言的主要语法和特性
开发语言
liulilittle2 小时前
UNIX/macOS路由表查询原理与实现
服务器·开发语言·c++·macos·unix·编程语言