关于链表的一些问题

 

求链表的中间节点

可以定义两个指针,一个一次走两步一个一次走一步,当走的快的走到NULL时,走的慢的就是链表的中间节点。(此法求出的偶数个节点的链表的中间节点是它中间的第二个)


求倒数第K个节点

也可以定义两个指针,然后一个先走K步,走完以后,另一个再走


判断是否为回文链表

①先用快慢指针求中间节点

②逆置中间节点及其后的节点,并用一个指针指向该逆置后的链表

③头指针和指向该逆置后的链表的指针一起走并比较是否相等,有一个不相等就不是回文链表

④有一个链表走到NULL就停下,并且该链表是回文链表(因为中间节点的前一个结点还指向逆置后的最后一个节点)


判断两个链表是否相交,并且求出第一个相交的节点

①如果相交这两个链表的尾节点一定相等

②如果两个链表的尾节点相等,就求出两个链表的长度

③让长的先走这两个链表长度的差值步,然后一起走

④走到两个链表的节点的指针域第1次相等的地方,就是第一个相交的节点


判断链表是否带环

(用快慢指针,一个走一次走两步,一个一次走一步)

由于快指针与慢指针走的步数差为1(步数差=快指针一次走的步数—慢指针一次走的步数),所以如果链表带环,慢指针最终一定会追上快指针,反之则不会。

 

如果快指针与慢指针走的步数差为1(步数差=快指针一次走的步数—慢指针一次走的步数)则快慢指针一定会再环中相遇

 

因为

则设快指针入和慢指针入环后的差距为N,

如果快指针与慢指针走的步数差为1

那么他们两个指针每走一次,N就减1,当N为0时就相遇了

 

如果快指针与慢指针走的步数差不为1

就要看N是不是他们两个的差值的倍数了,

如果是就追得上,

如果不是就要看N减到负数时新的N是不是他们两个都倍数,如果还不是,就肯定追不上了。


求带环链表的入环节点

 

结论:快指針从相遇点开始走,慢指从链表的头开始走,他们会在环的入口点相遇

9c1dcb1798884fc6b53108f4d55cda58.png

(如上图)

 

把快慢指针的相遇点指向NULL,让一个新的指针指向相遇点的下一个节点,让这个新的指针一步一步向后走,再让一个指针原链表的头开始走,这两个链表的交点就是链表入环点

 


复制复杂链表问题

(复杂链表是多了一个随机指针,这个指针可能指向他自己这个链表的任何一个节点,也可能指向NULL)

 

时间复杂度为O(N)的方法

 

在原链表的每一个节点后面插入malloc一个新节点,这个新节点复制了它前一个节点的数据域。

 

这个新节点的随机指针指向它前一个节点的随机指针指向的节点的next,如下图 

851f5f6df8aa4b5ba77c595a1a6ef4c0.png

 

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

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

相关文章

9 权限与特权

一,访问级别 权限和特权共同决定了对API对象(例如窗口和会话)的访问级别。 权限和特权是两个不同的概念。权限定义了执行某些操作的能力,例如设置属性。特权是根据角色类型授予的权限集合。 请注意,在创建(例如 screen_create_())或销毁(例如 screen_destroy_())对…

PowerShell Instal 一键部署gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…

【动态规划】673. 最长递增子序列的个数

673. 最长递增子序列的个数 解题思路 本题改造最长递增子序列但是最长子序列的长度不止一个dp数组代表以nums[i]结尾的最长子序列长度count[i]代表以nums[i]结尾的最长子序列的个数那么当nums[i]大于前面的元素nums[j]的时候,计算dp[i]和dp[j] 1的大小&#xff0…

新手快速上手掌握基础排序<一>

目录 引言 一:两数互换排序 1.画图分析 2.代码实现 二:三数换交换排序 1.例题举例 2.代码实现 3.再比如四数互换排序,也可以使用两数互换的方法来实现 ,但最好使用基础的排序方法(冒泡法,选择法) 三&#xf…

PointNet人工智能深度学习简明图解

PointNet 是一种深度网络架构,它使用点云来实现从对象分类、零件分割到场景语义解析等应用。 它于 2017 年实现,是第一个直接将点云作为 3D 识别任务输入的架构。 本文的想法是使用 Pytorch 实现 PointNet 的分类模型,并可视化其转换以了解模…

一个WebSocket的自定义hook

一个WebSocket的自定义hook 自己封装了一个WebSocket的hook,代码如下&#xff1a; import { useEffect, useRef } from "react";const WS_URL wss://xxx // 服务地址const useSocket () > {const socketRef useRef<WebSocket>()let heartTimer 0; // …

【python】爬取百度热搜排行榜Top50+可视化【附源码】【送数据分析书籍】

一、导入必要的模块&#xff1a; 这篇博客将介绍如何使用Python编写一个爬虫程序&#xff0c;从斗鱼直播网站上获取图片信息并保存到本地。我们将使用requests模块发送HTTP请求和接收响应&#xff0c;以及os模块处理文件和目录操作。 如果出现模块报错 进入控制台输入&#xff…

第82讲:MySQL Binlog日志的滚动

MySQL Binlog日志的滚动 MySQL Binlog日志滚动指的就是产生一个新的Binlog日志&#xff0c;然后进行记录&#xff0c;因为如果都在一个Binlog中记录&#xff0c;查询是非常慢的&#xff0c;检索的效率也很低。 Binlog日志滚动有三种方法&#xff1a; 重启MySQL 数据库一般不重…

android开发调用百度地图api实现加载地图和定位

目录 一.踩的一些坑以及解决方法 1.权限声明不要少 2.地图初始化 3.定位问题 &#xff08;1&#xff09;监听器注册 &#xff08;2&#xff09;定位监听器类MyLocationListener的实现 &#xff08;3&#xff09;定位功能的调用 4.android studio连接真机调试问题 二.…

Spring Boot应用整合Prometheus

Spring Boot Actuator 提供了一组用于监控和管理 Spring Boot 应用程序的端点&#xff0c;而 Prometheus 是一个开源的监控和告警工具。通过将这两者结合起来&#xff0c;您可以实时监控您的应用程序的性能指标&#xff0c;并通过 Prometheus 提供的丰富的查询语言来分析和可视…

MySQL:索引

MySQL官方对索引的定义为: 索引 (Index) 是帮助MySQL高效获取数据的数据结构。 提取句子主干&#xff0c;就可以得到索引的本质:索引是数据结构。 1. 什么是索引&#xff0c;索引的作用 索引是一种用于快速查询和检索数据的数据结构&#xff0c;帮助mysql提高查询效率的数据…

ros2查看launch文件内需要提供的参数(接口):

格式&#xff1a;ros2 launch --show-args 包名称 launch文件名称 例如&#xff1a; ros2 launch --show-args ros_gz_sim gz_sim.python.py

行人重识别优化:Pose-Guided Feature Alignment for Occluded Person Re-Identification

文章记录了ICCV2019的一篇优化遮挡行人重识别论文的知识点&#xff1a;Pose-Guided Feature Alignment for Occluded Person Re-Identification 论文地址&#xff1a; https://yu-wu.net/pdf/ICCV2019_Occluded-reID.pdf Partial Feature Branch分支: PCB结构&#xff0c;将…

精致旅游网ROXANDREA 网页设计 html模板

一、需求分析 旅游网站通常具有多种功能&#xff0c;以下是一些常见的旅游网站功能&#xff1a; 酒店预订&#xff1a;旅游网站可以提供酒店预订服务&#xff0c;让用户搜索并预订符合其需求和预算的酒店房间。 机票预订&#xff1a;用户可以通过旅游网站搜索、比较和预订机票…

JavaScript 工具库 | PrefixFree给CSS自动添加浏览器前缀

新版的CSS拥有多个新属性&#xff0c;而标准有没有统一&#xff0c;有的浏览器厂商为了吸引更多的开发者和用户&#xff0c;已经加入了最新的CSS属性支持&#xff0c;这其中包含了很多炫酷的功能&#xff0c;但是我们在使用的时候&#xff0c;不得不在属性前面添加这些浏览器的…

毕业设计之开题报告

终于轮到我来写开题报告了&#xff0c;呃呃呃呃呃&#xff0c;目前有点难产了。想做的东西是关于区块链的后端设计实现&#xff0c;但是因为是完全原创之前没有类似的项目能去参考&#xff0c;所以其实有点慌的。 框架梳理 这是我们开题报告的要求&#xff1a; 包括题目研究的…

Django框架:入门指南与常用命令

引言&#xff1a; 在当今的Web开发世界中&#xff0c;Django无疑是一个备受瞩目的框架。它以其强大的功能和易用性&#xff0c;吸引着越来越多的开发者。这篇博客将为你提供一个关于Django的概览&#xff0c;以及一些常用的命令&#xff0c;帮助你快速上手。 一、Django简介&…

GPT技术:人工智能的语言革命

在人工智能的领域中&#xff0c;自然语言处理&#xff08;NLP&#xff09;一直是一个极具挑战性的研究领域。随着技术的进步&#xff0c;一个名为GPT&#xff08;Generative Pre-trained Transformer&#xff09;的模型出现在了公众的视野中&#xff0c;它不仅改变了我们与机器…

Java项目:102SSM汽车租赁系统

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 汽车租赁系统基于SpringSpringMVCMybatis开发&#xff0c;系统使用shiro框架做权限安全控制&#xff0c;超级管理员登录系统后可根据自己的实际需求配角色…

uniapp的css样式图片大小截图展示

目录 截取图片前截取图片后第一种方式&#xff1a;代码第二种方式&#xff1a;代码最后 截取图片前 截取图片后 第一种方式&#xff1a;代码 <view class"swiper-box-img"><image class"swiper-box-img-img" :src"item.file_path" mod…