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

传送门

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

题目以及解析

题目

在这里插入图片描述

解题代码及解析

解析

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

代码

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
}

总结:

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

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-11 10:48:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-11 10:48:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-11 10:48:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-11 10:48:01       20 阅读

热门阅读

  1. 题目 1059: 二级C语言-等差数列—c语言

    2024-02-11 10:48:01       36 阅读
  2. 测试OpenSIPS3.4.3的lua模块

    2024-02-11 10:48:01       32 阅读
  3. 刷题13 数组

    2024-02-11 10:48:01       35 阅读
  4. Linux - updatedb 命令

    2024-02-11 10:48:01       26 阅读
  5. P1595 信封问题

    2024-02-11 10:48:01       29 阅读
  6. 每日OJ题_位运算④_力扣268. 丢失的数字

    2024-02-11 10:48:01       34 阅读
  7. Python爬虫之关系型数据库存储#5

    2024-02-11 10:48:01       26 阅读
  8. [office] excel中四舍五入的教程 #经验分享#媒体

    2024-02-11 10:48:01       28 阅读
  9. Github 2024-02-10 开源项目日报Top10

    2024-02-11 10:48:01       33 阅读