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

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.dtcms.com/a/307823.html

相关文章:

  • linux运维学习第十三周
  • 数据库学习------数据库隔离类型及其与事务特性
  • 会议室预定系统核心技术:如何用一行SQL解决时间冲突检测难题
  • Spark SQL 的 SQL 模式和 DSL模式
  • 前端js通过a标签直接预览pdf文件,弹出下载页面问题
  • Hive课后练习题
  • Docker 初学者需要了解的几个知识点 (七):php.ini
  • ode with me是idea中用来干嘛的插件
  • MVS相机+YOLO检测方法
  • 【14】大恒相机SDK C#开发 ——Bitmap.UnlockBits()什么意思?有什么用?bmpData.Scan0;什么意思?有什么用?
  • 行业要闻|正式落地!新思科技宣布完成对Ansys的收购
  • 是德科技的BenchVue和纳米软件的ATECLOUD有哪些区别?
  • 1 机器学习概述 (第一天2025.7.31)
  • 【龙泽科技】汽车维护与底盘拆装检修仿真教学软件【风光580】
  • 非阿贝尔编织(Non-Abelian Braiding)
  • 量子测量的物理场景与理论
  • Union Application
  • 基于深度学习的医学图像分析:使用BERT实现医学文本分类
  • 从“救火”到“先知”:润建曲尺运维大模型如何重构网络运维价值链
  • Linux核心转储(Core Dump)原理、配置与调试实践
  • Bug报错集
  • Qt 常用控件 - 3
  • 基于PyTorch利用CNN实现MNIST的手写数字识别
  • RAG:让AI更聪明的“外接大脑“ | AI小知识
  • MacroDroid Pro 功能强大的任务自动化和配置应用程序
  • PHP 与 MySQL 详解实战入门(1)
  • 发票闪印 v3.9.17 免费电子PDF发票批量打印工具绿色版
  • css 不错的按钮动画
  • 22.(vue3.x+vite) 组件动态导入 (懒加载defineAsyncComponent)
  • 超简单的跳动爱心