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

Leetcode 206. 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:
在这里插入图片描述

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:
在这里插入图片描述
输入:head = [1,2]
输出:[2,1]
示例 3:
输入:head = []
输出:[]

提示:
链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000

进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

方法一:迭代(双指针)
考虑遍历链表,并在访问各节点时修改 next 引用指向
python:

class Solution:def reverseList(self, head: ListNode) -> ListNode:cur, pre = head, Nonewhile cur:tmp = cur.next # 暂存后继节点 cur.nextcur.next = pre # 修改 next 引用指向pre = cur      # pre 暂存 curcur = tmp      # cur 访问下一节点return pre

复杂度分析:
时间复杂度 O(N) : 遍历链表使用线性大小时间。
空间复杂度 O(1): 变量 pre 和 cur 使用常数大小额外空间。

方法二:递归
考虑使用递归法遍历链表,当越过尾节点后终止递归,在回溯时修改各节点的 next 引用指向。

recur(cur, pre) 递归函数:
终止条件:当 cur 为空,则返回尾节点 pre (即反转链表的头节点);
递归后继节点,记录返回值(即反转链表的头节点)为 res ;
修改当前节点 cur 引用指向前驱节点 pre ;
返回反转链表的头节点 res ;
reverseList(head) 函数:
调用并返回 recur(head, null) 。传入 null 是因为反转链表后, head 节点指向 null ;
python:

class Solution:def reverseList(self, head: ListNode) -> ListNode:def recur(cur, pre):if not cur: return pre     # 终止条件res = recur(cur.next, cur) # 递归后继节点cur.next = pre             # 修改节点引用指向return res                 # 返回反转链表的头节点return recur(head, None)       # 调用递归并返回

复杂度分析:
时间复杂度 O(N) : 遍历链表使用线性大小时间。
空间复杂度 O(N): 遍历链表的递归深度达到 N ,系统使用 O(N)大小额外空间。

http://www.lryc.cn/news/312912.html

相关文章:

  • 电子科技大学课程《计算机网络系统》(持续更新)
  • HBase介绍、特点、应用场景、生态圈
  • 蓝桥杯错误记录
  • Spring-静态代理VS动态代理/实现代理ProxyFactory
  • 单片机精进之路-9ds18b20温度传感器
  • 支部管理系统微信小程序(管理端+用户端)flask+vue+mysql+微信小程序
  • 4、Linux-常用命令(二)
  • golang实现openssl自签名双向认证
  • 【学习】torchvision.datasets.ImageFolder()
  • pyinstaller打包的exe运行报错 No module named path
  • Vue3中Vuex状态管理库学习笔记
  • React富文本编辑器开发(二)
  • nginx代理minio客户端
  • 将ppt里的视频导出来
  • Spring Boot 3核心技术与最佳实践
  • redis缓存更新策略
  • 【操作系统学习笔记】文件管理1.4
  • 快递包装展|2024上海国际电商物流包装产业展览会
  • vue页面刷新问题:返回之前打开的页面,走了create方法(解决)
  • IJCAI23 - Continual Learning Tutorial
  • 【YOLO v5 v7 v8 v9小目标改进】HTA:自注意力 + 通道注意力 + 重叠交叉注意力,提高细节识别、颜色表达、边缘清晰度
  • 外包干了10天,技术退步明显。。。。。
  • 如何在Win系统本地部署Jupyter Notbook交互笔记并结合内网穿透实现公网远程使用
  • 【自动化测试】之PO模式介绍及案例
  • 3D-Genome | Hi-C互作矩阵归一化指南
  • 【设计者模式】单例模式
  • Windows7缺失api-ms-win-crt-runtime-l1-1-0.dll的解决方法
  • coqui-ai/TTS 安装使用
  • Spring AOP相关注解及执行顺序
  • C++从零开始的打怪升级之路(day44)