0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

剑指Offer(36):两个链表的第一个公共结点

电子设计 来源:电子设计 作者:电子设计 2020-12-10 22:40 次阅读

剑指Offer(36):两个链表的第一个公共结点

一、引子

这个系列是我在牛客网上刷《剑指Offer》的刷题笔记,旨在提升下自己的算法能力。

二、题目

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

1、思路

如果存在共同节点的话,那么从该节点,两个链表之后的元素都是相同的。也就是说两个链表从尾部往前到某个点,节点都是一样的。

两条相交的链表呈Y型。可以从两条链表尾部同时出发,最后一个相同的结点就是链表的第一个相同的结点。可以利用栈来实现。时间复杂度有O(m + n), 空间复杂度为O(m + n)

2、编程实现

python

代码实现方案:

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def FindFirstCommonNode(self, pHead1, pHead2):
        # write code here
        if not pHead1 or not pHead2:
            return None
        
        #定义一个新的栈倒叙存放两个节点
        stack1 = []
        stack2 = []
        
        while pHead1:
            stack1.append(pHead1)
            pHead1 = pHead1.next
            
        while pHead2:
            stack2.append(pHead2)
            pHead2 = pHead2.next
            
        first = None
        while stack1 and stack2:
            top1 = stack1.pop()
            top2 = stack2.pop()
            if top1 is top2:
                first=top1
            else:
                break
        return first

分享技术,乐享生活:我们的公众号计算机视觉这件小事每周推送“AI”系列资讯类文章,欢迎您的关注!

本文由博客一文多发平台 OpenWrite 发布!

审核编辑 黄昊宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1791

    文章

    46783

    浏览量

    237392
  • 机器学习
    +关注

    关注

    66

    文章

    8371

    浏览量

    132376
  • 深度学习
    +关注

    关注

    73

    文章

    5489

    浏览量

    120942
收藏 人收藏

    评论

    相关推荐

    链表结点的数据结构该如何定义

    当用户需要使用链表管理数据时,仅需关联数据和链表结点,最简单的方式是将数据和链表结点打包在起。
    的头像 发表于 09-20 16:28 1.5w次阅读
    <b class='flag-5'>链表</b><b class='flag-5'>结点</b>的数据结构该如何定义

    使用两个级联MMCM第二是否会影响第一个MMCM的抖动?

    大家好, 如果我使用两个级联MMCM,第二是否会影响第一个MMCM的抖动?谢谢。最好的祝福。
    发表于 06-05 11:31

    HarmonyOS编写第一个页面

    编写第一个页面在Java UI框架中,提供了种编写布局的方式:在XML中声明UI布局和在代码中创建布局。这种方式创建出的布局没有本质上的区别,以便熟悉种方式,我们将通过XML的方
    发表于 09-17 14:34

    线性表、顺序表和链表

    线性表、顺序表和链表:1、线性结构的定义:空或者只有结点。或者1、存在唯
    发表于 08-13 13:51 0次下载

    如何编译第一个文件

    如何编译第一个文件,感兴趣可以看看
    发表于 01-21 11:16 0次下载

    STM32第一个例子

    STM32第一个例子是学习RAM单片机非常好的开始
    发表于 07-14 18:14 0次下载

    合并两个排序的链表

    合并两个排序的链表、题目要求 输入两个单调递增的链表,输出两个
    发表于 01-16 22:02 572次阅读

    以后再也不怕别人问「单链表」的问题啦

    「头指针」顾名思义,是指向链表第一个结点的指针,如果有头结点的话,那么就是指向头结点的指针。它是链表
    的头像 发表于 11-23 11:30 2344次阅读
    以后再也不怕别人问「单<b class='flag-5'>链表</b>」的问题啦

    Linux USB总线的两个链表

    USB 总线引出两个首要 的链表为 USB 设备
    发表于 04-20 10:33 962次阅读

    第一个STM32CubeIDE项目

    使用STM32CubeIDE的第一个项目开始第一个项目添加代码今天开始做一个STM32CubeIDE的第一个项目,首先需要说明的:STM32CubeIDE是
    发表于 12-29 19:29 11次下载
    <b class='flag-5'>第一个</b>STM32CubeIDE项目

    LeetCode876链表的中间结点介绍

    给定结点为 head 的非空单链表,返回链表的中间结点
    的头像 发表于 01-11 17:58 794次阅读
    LeetCode876<b class='flag-5'>链表</b>的中间<b class='flag-5'>结点</b>介绍

    C语言入门之链表概述

    链表种常见的重要的数据结构。它是动态地进行存储分配的种结构,是根据需要开辟内存单元。 链表
    的头像 发表于 03-24 15:04 1215次阅读

    链表数据结构基本概念

    链表基本概念 头指针: 头指针是链表指向第一个结点的指针,若链表有头
    的头像 发表于 07-27 11:14 775次阅读
    <b class='flag-5'>链表</b>数据结构基本概念

    链表和双链表的区别在哪里

    链表和双链表的区别 单链表的每一个节点中只有指向下一个结点的指针,不能进行回溯。 双
    的头像 发表于 07-27 11:20 1602次阅读
    单<b class='flag-5'>链表</b>和双<b class='flag-5'>链表</b>的区别在哪里

    如何判断两个链表是否相交,假设两个链表都没有环?

    首先,很多同学会存在误区,认为两个链表相交应该这样的。
    的头像 发表于 08-08 17:08 967次阅读
    如何判断<b class='flag-5'>两个</b><b class='flag-5'>链表</b>是否相交,假设<b class='flag-5'>两个</b><b class='flag-5'>链表</b>都没有环?