当前位置: 首页 > java >正文

Leetcode-206.反转链表

image.png

  • 思路概述

    • 利用栈的 先进后出(LIFO) 特性,先顺序遍历链表,把所有节点压入栈;

    • 弹出栈顶节点时正好是原链表的尾节点,依次连接即可得到反转链表。

  • 具体步骤

    1. 初始化空栈 st

    2. 遍历链表 head,将每个节点压入栈中;

    3. 栈顶弹出节点作为新链表头 new_head,并维护一个可移动尾指针 cur

    4. 每次出栈一个节点:

      • 先断开该节点原来的 next(防止形成环);

      • 接在新链表尾部 cur.next = node

      • 移动尾指针 cur = node

    5. 循环结束后,cur.next = None 并返回 new_head

复杂度分析

  • 时间复杂度:O(n),遍历一次压栈,一次出栈;

  • 空间复杂度:O(n),栈存储了全部节点引用。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = nextclass Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:p=headst=[]while p!=None:st.append(p)p=p.nextdummy = ListNode(0)tail = dummywhile st:node=st.pop()tail.next=nodetail=nodetail.next = Nonereturn dummy.next
http://www.xdnf.cn/news/16748.html

相关文章:

  • 当过滤条件不符合最左前缀时,如何有效利用索引? | OceanBase SQL 优化实践
  • 免费语音识别(ASR)服务深度指南​
  • 39.MySQL索引
  • 基于深度学习的医学图像分析:使用YOLOv5实现医学图像目标检测
  • react+ant design怎么样式穿透-tooltip怎么去掉箭头
  • 限流算法详解:固定窗口、滑动窗口、令牌桶与漏桶算法全面对比
  • 实现implements InitializingBean, DisposableBean 有什么用
  • 【2025/07/30】GitHub 今日热门项目
  • arkui 动画曲线
  • 分布式搜索和分析引擎Elasticsearch实战指南
  • SpringBoot 2.7.18 升级 3.4.6
  • duiLib 自定义资源目录
  • C#垃圾回收机制:原理与实践
  • 极致业务弹性 密度性能双管齐下—联想问天 WR5220 G5 服务器测试
  • Spring AI 海运管理应用第2部分
  • Android Animation Transitions:打造流畅的用户体验
  • 全栈:SSH和SSM和Springboot mybatisplus有什么区别?
  • WPFC#超市管理系统(3)商品管理
  • 如何判断一个数据库是不是出问题了?
  • 2025年6月电子学会青少年软件编程(C语言)等级考试试卷(二级)
  • SpringBoot学习 |springboot概念+微服务架构
  • Python并发与性能革命:自由线程、JIT编译器的深度解析与未来展望
  • 滚珠导轨在电子制造中的流畅性优势
  • Electron + Fabric 打包遇到error LNK2001
  • 从数据到预测:InfluxDB+Prophet时间序列分析案例实战
  • 观远 ChatBI 完成 DeepSeek-R1 大模型适配:开启智能数据分析跃升新篇
  • 工作笔记-----FreeRTOS中的lwIP网络任务为什么会让出CPU
  • Ⅹ—6.计算机二级综合题15---18套
  • 前端安全防护:XSS、CSRF与SQL注入漏洞深度解析与防御
  • 在macOS上使用VS Code和Clang配置C++开发环境