news 2026/6/21 22:36:41

一种方法来解决三道链表相关的题目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一种方法来解决三道链表相关的题目

今天小编就来和大家一块看三道链表相关的题目,可以使用同一种方法来解决。

虽然题目中用到了指针,但我们知道,Python是没有指针的,所以在Python里面,这里实际上指的是引用。不过由于“指针”这个词更加形象,所以下文我们还是会用指针来表示对一个对象的应用。

先来看我们将要解决的三道题目:

题目1:只扫描一次链表,O(1)空间复杂度,返回链表倒数第 k 个节点。
题目2:只扫描一次链表,O(1)空间复杂度,返回链表中间的节点。
题目3:空间复杂度(1),查询链表是否有环。

其中前两道题要求只能扫描链表一次。但是大家可能会有疑问,例如对于第 2 题,都不知道链表一共有多少个节点,怎么可能知道中间的节点是哪个?但如果提前把链表扫描一遍,知道一共有多少个节点了,又不能再次扫描链表,那么就必须把每个节点和序号都存下来,这样空间复杂度就不可能是O(1)了。

我们先来看看第2题,找到链表中间的节点。

从下图的两个链表可以看到:

链表有 n 个节点,如果 n 为奇数,那么中间的节点在第(n + 1) / 2个节点。如果 n 为偶数,那么中间的节点在第n / 2个节点。

这个信息怎么使用呢?我们看下面一个表格:

既然如此,如果我们在链表里面有两个指针(引用),其中一个每次移动2个节点,另一个每次移动一个节点。这样当快的指针移动到了末尾,慢的指针刚刚好指向中间的节点。

用代码来表示:

def find_mid(node): if not node: return None if not node.next: return node fast = slow = node while fast.next and fast.next.next: slow = slow.next fast = fast.next.next return slow

返回的 slow 就是最中间的节点。

再来看第3道题。跟第二题一样,也是一快一慢两个指针,如果链表有环,那么快的指针会绕到慢的指针的后面,然后追上来。只要看快的指针是否跟慢的指针重合,就知道是否有环了:

def find_cycle(node): if not node: return False slow = fast = node while fast: fast = fast.next if not fast: # 快的指针到了链表末尾,说明没有环 return False if fast is slow: # 快的指针追上了慢的指针,说明有环 return True fast = fast.next if fast is slow: return True slow = slow.next return False
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 22:32:21

PyFluent完全指南:如何用Python脚本彻底告别Fluent手动操作

PyFluent完全指南:如何用Python脚本彻底告别Fluent手动操作 【免费下载链接】pyfluent Pythonic interface to Ansys Fluent 项目地址: https://gitcode.com/gh_mirrors/pyf/pyfluent PyFluent是Ansys官方推出的Python接口,为CFD工程师提供了革命…

作者头像 李华
网站建设 2026/6/7 21:35:34

第一章java概述

本章学习目标 1. Java语言的特点 2. java开发运行环境的配置 3.Java程序的种类 …

作者头像 李华
网站建设 2026/6/7 21:26:11

论文里引用文学作品大段原话,应该如何引用,才能降低重复率?

这个问题在汉语言文学、历史学、艺术学、古典文献学等专业特别常见。很多同学会遇到:我的论文研究《红楼梦》《燕食记》《边城》这些文学作品,不引用原文根本没法分析,但一引用,重复率就飙升。先说结论:文学作品原文可…

作者头像 李华
网站建设 2026/6/7 20:08:02

教育部抽检论文的重复率是什么标准?

很多同学一提到教育部论文抽检,最担心的就是:“教育部抽检是不是有统一的重复率标准?”没有一个全国统一的“教育部规定重复率必须低于X%”的标准。这是很多人误解的地方。一、教育部抽检查什么?教育部学位论文抽检的核心关注点其…

作者头像 李华
网站建设 2026/6/7 16:19:00

Vatee万腾:聚焦细节,看看风控思路的关键细节

在外汇相关服务里,Vatee万腾是否值得长期关注,往往取决于几个清晰的体验点:说明是否好理解、提示是否到位、流程是否连贯、支持是否稳定。下面从这些维度对Vatee万腾做一次正向梳理与要点归纳。外汇相关平台的价值,往往体现在长期…

作者头像 李华
网站建设 2026/6/5 22:22:24

1986-2015年全球30米分辨率城镇用地扩张占用水体时空数据集

本数据集提供了1986—2015年全球范围内30米分辨率的城镇用地扩张占用水体时空数据,用于反映近30年来全球城市扩张对水体的直接占用情况。数据基于高分辨率遥感影像和全球地表水数据集,通过分析城镇用地变化与水体分布的时空叠加关系,提取了城…

作者头像 李华