【牛客面试必刷TOP101】Day3.BM10两个链表的第一个公共结点和BM13判断一个链表是否为回文结构

news2024/10/12 8:24:50

作者简介:大家好,我是未央;

博客首页:未央.303

系列专栏:牛客面试必刷TOP101

每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!!!

文章目录

前言

一、两个链表的第一个公共结点

题目描述

解题分析

 二、判断一个链表是否为回文结构

题目描述

解题分析

总结



前言

今天是我们第3天的牛客面试必刷TOP101,比较简单,一定要好好掌握清楚;每天见!!!


一、两个链表的第一个公共结点

题目描述

描述

输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)

数据范围: n≤1000
要求:空间复杂度 O(1),时间复杂度 O(n)


输入描述:

输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和第二个链表的公共部分。 后台会将这3个参数组装为两个链表,并将这两个链表对应的头节点传入到函数FindFirstCommonNode里面,用户得到的输入只有pHead1和pHead2。


返回值描述:

返回传入的pHead1和pHead2的第一个公共结点,后台会打印以该节点为头节点的链表。


举例说明: 

例如,输入{1,2,3},{4,5},{6,7}时,两个无环的单向链表的结构如下图所示:

可以看到它们的第一个公共结点的结点值为6,所以返回结点值为6的结点。


示例1:


解题分析

解题思路:

解题步骤:

步骤1:使用两个指针N1,N2,一个从链表1的头节点开始遍历,我们记为N1,一个从链表2的头节点开始遍历,我们记为N2。


步骤2:让N1和N2一起遍历,当N1先走完链表1的尽头(为null)的时候,则从链表2的头节点继续遍历,同样,如果N2先走完了链表2的尽头,则从链表1的头节点继续遍历,也就是说,N1和N2都会遍历链表1和链表2。


步骤3:因为两个指针,同样的速度,走完同样长度(链表1+链表2),不管两条链表有无相同节点,都能够同时到达终点。

即:(N1最后肯定能到达链表2的终点,N2肯定能到达链表1的终点)。


步骤4:所以,如何得到公共节点:

  • 有公共节点的时候,N1和N2必会相遇,因为长度一样嘛,速度也一定,必会走到相同的地方的,所以当两者相等的时候,则会遇到第一个公共的节点;
  • 无公共节点的时候,此时N1和N2则都会走到终点,那么他们此时都是null,所以也算是相等了。

动态图描述过程:


代码编写:


 二、判断一个链表是否为回文结构

题目描述

描述

给定一个链表,请判断该链表是否为回文结构。

回文是指该字符串正序逆序完全一致。

数据范围: 链表节点数 0≤n≤10^5,链表中每个节点的值满足 ∣val∣≤10^7


示例1:


示例2:


示例3:

解题分析

解题思路:

本题我们采用双指针的方法比较容易理解和解决;

双指针方法:

双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个指针(特殊情况甚至可以多个),两个指针或是同方向访问两个链表、或是同方向访问一个链表(快慢指针)、或是相反方向扫描(对撞指针),从而达到我们需要的目的。


思路:
既然方法一我们已经将链表的值放入了数组中,数组是可以按照下标直接访问的,那干啥还要傻乎乎地用另一个数组来表示反转后的数组呢?我们直接从后往前遍历与从前往后遍历一同比较,利用两个指针对撞访问,不就少了很多额外的时间了吗?


解题步骤:
步骤1:遍历一次链表,将元素取出放入辅助数组中。


步骤2:使用下标访问,两个下标代表两个指针,两个指针分别从数组首尾开始遍历,左指针指向开头,从左到右,右指针指向数组末尾,从右到左,依次比较元素是否相同。(指针对撞)


步骤3:如果有不一样,则不是回文结构。否则遍历到两个指针相遇就好了,因为左指针到了右半部分都是右指针走过的路,比较的值也是与之前相同的。


动态图过程表示:


代码编写:



总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/992976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习入门教学——决策树

1、简介 决策树算法是一种归纳分类算法,它通过对训练集的学习,挖掘出有用的规则,用于对新数据进行预测。决策树算法属于监督学习方法。决策树归纳的基本算法是贪心算法,自顶向下来构建决策树。 贪心算法:在每一步选择…

LeetCode-80. 删除有序数组中的重复项 II-⭐⭐

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 提示&…

解决vue3类型“{}”上不存在属性

刚创建的一个Vue3和Ts的项目,结果使用Vscode打开后,修改了index.vue文件就报错了: 修改tsconfig.json文件 在tsconfig.json文件中添加一行代码:就是让ts识别vue文件 "include": ["src/**/*.ts", "src/**/*.d.ts&q…

机器学习入门教学——过拟合、欠拟合、模型验证、样本拆分

1、过拟合 定义 过拟合指的是模型对训练数据拟合的太好,以至于无法很好地泛化到新数据。原因 训练数据不足模型太复杂(如深层神经网络)训练时间太长后果 模型在训练数据上表现良好,但在测试数据上表现较差。解决方法 增加训练数据…

今天,外滩大会“开发者创新营地”成为技术爱好者打卡点

9月9日,上海,黄浦江边。室外温度31度,依然挡不住技术爱好者们的热情!他们涌入了外滩大会最值得期待的打卡点:开发者创新营地。 开发者创新营地是本次外滩大会搭建的技术人交流平台,以闪电演讲(…

山西电力市场日前价格预测【2023-09-10】

日前价格预测 预测明日(2023-09-10)山西电力市场全天平均日前电价为359.80元/MWh。其中,最高日前电价为412.31元/MWh,预计出现在18: 45。最低日前电价为322.32元/MWh,预计出现在13: 45。 价差方向预测 1: 实…

【实例项目:基于多设计模式下的日志系统(同步异步)】

一、项目简介 1.日志的概念(白话版) 日志类似于日记,通常是指对完成某件事情的过程中状态等的记录,而计算机中的日志是指日志数据,是有价值的信息宝库,各种操作系统、应用程序、设备和安全产品的日志数据能…

Baichuan2开源大模型正式发布,王小川:性能超过LLaMA2

大数据产业创新服务媒体 ——聚焦数据 改变商业 ChatGPT火爆出圈之后,社交巨头Meta奋力追赶,分别在3月、7月发布开源的LLaMA、LLaMA2大模型,引领一场大模型开源运动。 LLaMA2大模型,包含了70亿、130亿、700亿参数三个版本&#x…

对Transformer中的Attention(注意力机制)的一点点探索

摘要:本文试图对 Transformer 中的 Attention 机制进行一点点探索。并就 6 个问题深入展开。 ✅ NLP 研 1 选手的学习笔记 简介:小王,NPU,2023级,计算机技术 研究方向:文本生成、摘要生成 文章目录 一、为啥…

强大的JTAG边界扫描(3):常用边界扫描测试软件

文章目录 1. 功能强大的XJTAG2. 小巧简洁的TopJTAG3. TopJTAG安装4. TopJTAG基本使用 本文介绍两款常用的边界扫描测试软件:XJTAG和TopJTAG,前者收费、功能强大,后者免费(和谐后),功能简洁。 如果只是要进…

深入探讨梯度下降:优化机器学习的关键步骤(三)

文章目录 🍀引言🍀随机、批量梯度下降的差异🍀随机梯度下降的实现🍀随机梯度下降的调试 🍀引言 随机梯度下降是一种优化方法,主要作用是提高迭代速度,避免陷入庞大计算量的泥沼。在每次更新时&a…

【图神经网络 01】

图的基本构成: V:Vertex (or node) attributes E:Edge (or link) attributes and directions U:Global (or master node) attributes 图的邻接矩阵:文本数据也可以表示图的形式,邻接矩阵表示的连接关系。 以…

计算机竞赛 基于深度学的图像修复 图像补全

1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学的图像修复 图像补全 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-se…

牛客网项目-第一章-笔记

牛客网项目-第一章 环境配置 java maven idea Spring Intializr 搜索jar包的网站&#xff1a;https://mvnrepository.com/ https://start.spring.io/ 缺少的aop包&#xff0c;手动在pom.xml中加入依赖 <dependency><groupId>org.springframework.boot</gro…

OpenRoads Designer导入文本格式水平路线、路线纵断面

ORD可以用以文本文件进行定义水平几何路线及纵断面几何路线直接导入来完成几何路线的定义&#xff1a; 水平路线 平面几何路线示例 “平面几何路线.txt”文件内容&#xff1a; BP-1,54376.169,1816.914 BP,54376.101,1817.912 JD01,54358.369,2081.452,0 JD02,54810.789,477…

linux 基础命令 cd /xxx 和 cd xxx 的区别

cd 命令&#xff1a;用于改变当前工作目录的命令&#xff0c;作用&#xff1a;切换当前目录至其它目录 用 cd 命令去 home目录&#xff1a; cd home/ 用cd 命令 去tony 目录下 cd ../ 返回上级目录 cd ../ tony / 返回上级目录进入和hom 同级的tony 目录 这里要讲 linux …

树(一)树和二叉树的基本概念

文章目录 一、树1、什么是树2、树的相关概念3、树的表示 二、二叉树1、二叉树的概念2、二叉树的几种情况3、特殊二叉树4、二叉树的性质5、二叉树的存储结构 一、树 1、什么是树 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个…

C++学习——vector类的使用

目录 vector类的介绍&#xff1a; vector类的构造函数: operator operator [ ] begin & end size & resize capacity & reserve push_back & pop_back insert & erase vector类的介绍&#xff1a; vector是C标准模板库中的部分内容&#xff0c;中文偶尔…

【Python】OpenCV立体相机配准与三角化代码实现

下面的介绍了使用python和OpenCV对两个相机进行标定、配准,同时实现人体关键点三角化的过程 import cv2 as cv import glob import numpy as np import matplotlib.pyplot as pltdef calibrate_camera(images_folder):images_names = glob.glob(images_folder

css画一条渐变的虚线

效果展示 原理&#xff1a;给元素设置一个渐变的背景色&#xff0c;画一条白色的虚线盖住背景&#xff0c;就达到了渐变虚线的效果 代码&#xff1a; <div class"pending-line"></div>.pending-line{width: 101px;border-top: 2px dashed #fff; // do…