剑指Offer(36):两个链表的第一个公共结点
一、引子
这个系列是我在牛客网上刷《剑指Offer》的刷题笔记,旨在提升下自己的算法能力。
二、题目
输入两个链表,找出它们的第一个公共结点。
1、思路
如果存在共同节点的话,那么从该节点,两个链表之后的元素都是相同的。也就是说两个链表从尾部往前到某个点,节点都是一样的。
两条相交的链表呈Y型。可以从两条链表尾部同时出发,最后一个相同的结点就是链表的第一个相同的结点。可以利用栈来实现。时间复杂度有O(m + n), 空间复杂度为O(m + n)
2、编程实现
代码实现方案:
# -*- 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
发布评论请先 登录
相关推荐
HarmonyOS编写第一个页面
编写第一个页面在Java UI框架中,提供了两种编写布局的方式:在XML中声明UI布局和在代码中创建布局。这两种方式创建出的布局没有本质上的区别,以便熟悉两种方式,我们将通过XML的方
发表于 09-17 14:34
第一个STM32CubeIDE项目
使用STM32CubeIDE的第一个项目开始第一个项目添加代码今天开始做一个STM32CubeIDE的第一个项目,首先需要说明的:STM32CubeIDE是
发表于 12-29 19:29
•11次下载
评论