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

力扣热题100之反转链表

题目

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
在这里插入图片描述

代码

方法一:

重点需要理解的是正确翻转的流程:在链表未被破坏之前保留cur的下一个节点信息->改变cur.next的指向->更新prev的位置->更新cur

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:           cur=head   prev=None while cur:Next=cur.next # 首先应该保存下一个节点cur.next=prev # 然后翻转prev=cur # 然后更新precur=Next # 然后将cur指向没有被改变的下一个节点return prev  # 返回翻转之后的链表的头节点    

方法二:递归

主要在于理解什么是递归,递归是怎么运行的,之前上课的时候老师说的一个比喻就是:递归就向打开一扇扇门,到最后一扇之后又从最后一扇门开始关门。也就是说这个代码中就是先反复调用reverseList函数到链表的最后一个元素(满足结束条件),执行head.next.next=head, head.next=None这两句代码,然后轮到倒数第二个元素进行上述操作……
假设原链表:1 -> 2 -> 3 -> 4 -> 5
递归过程:

  1. 递归至节点5,返回5。
  2. 节点4处理:5->4->None。
  3. 节点3处理:5->4->3->None。
  4. 节点2处理:5->4->3->2->None。
  5. 节点1处理:5->4->3->2->1->None。
    最终链表:5 ->4 ->3 ->2 ->1
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:           if head==None or head.next==None:return headnew_head=self.reverseList(head.next)head.next.next=headhead.next=Nonereturn new_head
http://www.dtcms.com/a/176410.html

相关文章:

  • vue3 element-plus 输入框回车跳转页面问题处理
  • 《Python星球日记》 第43天:机器学习概述与Scikit-learn入门
  • 协方差与皮尔逊相关系数:从定义到应用的全面解析
  • Coze平台 搭建「AI美食视频制作工作流」的详细实现方案
  • Java消息队列性能优化实践:从理论到实战
  • JVM的双亲委派模型
  • Spark 之 YarnCoarseGrainedExecutorBackend
  • Kubernetes学习笔记
  • Python训练营打卡——DAY18(2025.5.7)
  • 按拼音首字母进行排序组成新的数组(vue)
  • Prometheus实战教程:k8s平台-Redis监控案例
  • MySQL-数据查询(多表连接JOIN)-04-(11-2)
  • Go——项目实战
  • Kotlin zip 函数的作用和使用场景
  • 【纯小白博客搭建】Hugo+Github博客部署及主题(stack)美化等界面优化记录
  • DELL R770 服务器,更换OCP模块!
  • 使用 Java 11 的 HttpClient 处理 RESTful Web 服务
  • LLM :Function Call、MCP协议与A2A协议
  • 「Mac畅玩AIGC与多模态24」开发篇20 - 多语言输出工作流示例
  • 面试算法刷题练习1(核心+acm)
  • 力扣——25 K个一组翻转链表
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】7.3 动态报表生成(Jupyter Notebook/ReportLab)
  • python批量配置交换机简单实现
  • 场景可视化与数据编辑器:构建数据应用情境​
  • 居民健康监测小程序|基于微信小程序的居民健康监测小程序设计与实现(源码+数据库+文档)
  • OSCP - Proving Grounds - Sumo
  • 深度学习中常见的矩阵变换函数汇总(持续更新...)
  • 尚硅谷-硅谷甄选项目记录
  • 【2019 CWE/SANS 25 大编程错误清单】12越界写入
  • 二叉平衡树