当前位置: 首页 > 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

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

法一:迭代法,遍历整个链表,每遍历到一个节点,让它指向前驱节点:

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func reverseList(head *ListNode) *ListNode {var pre *ListNode = nilcur := headfor cur != nil {next := cur.Nextcur.Next = prepre = curcur = next}return pre
}

如果链表中有n个节点,此算法时间复杂度为O(n),空间复杂度为O(1)。

法二:递归法,每递归到一个节点,令其下一节点指向自身,然后令自身的下一节点指向空(为了头节点的下一节点指向空,反正本次递归返回后,上层节点非nil时,上层递归会修改本节点的Next值)。每次递归我们都返回链表的最后一个节点:

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func reverseList(head *ListNode) *ListNode {if head == nil || head.Next == nil {return head}ans := reverseList(head.Next)head.Next.Next = headhead.Next = nilreturn ans
}

如果链表中有n个节点,此算法时间复杂度为O(n),空间复杂度为O(n)。

相关文章:

  • 如何在智能交通系统中使用物联网技术提高道路安全和效率
  • 怎么让ChatGPT批量写作原创文章
  • Springboot+MybatisPlus+EasyExcel实现文件导入数据
  • Mysql中的那些锁
  • 【跟着CHATGPT学习硬件外设 | 04】ADC
  • SVG XML 格式定义图形入门介绍
  • 【AI模型-机器学习工具部署】远程服务器配置Jupyter notebook或jupyter lab服务
  • kubernetes-k9s一个基于Linux 终端的集群管理工具
  • 微信小程序布局中的单位及使用
  • EXCEL 通过FILES函数获取指定路径中的所有文件名
  • Docker Desktop 在 Windows 上的安装和使用
  • 从TCP/IP协议到socket编程详解
  • 接口自动化框架搭建(四):pytest的使用
  • C++经典面试题目(十一)
  • CVE-2023-4427:Out-of-bounds access in ReduceJSLoadPropertyWithEnumeratedKey
  • 2019年如何成为全栈工程师?
  • CSS3 变换
  • egg(89)--egg之redis的发布和订阅
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • MySQL的数据类型
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 成为一名优秀的Developer的书单
  • 从setTimeout-setInterval看JS线程
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 给github项目添加CI badge
  • 力扣(LeetCode)22
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • Hibernate主键生成策略及选择
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • ****Linux下Mysql的安装和配置
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .cfg\.dat\.mak(持续补充)
  • .equals()到底是什么意思?
  • .Net Remoting常用部署结构
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • @Repository 注解
  • @ResponseBody
  • @取消转义
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [Android Pro] Notification的使用
  • [Angular] 笔记 20:NgContent
  • [C语言]一维数组二维数组的大小
  • [LeetCode]-Integer to Roman 阿拉伯数字转罗马数字
  • [NOI2012]迷失游乐园
  • [openGL]在ubuntu20.06上搭建openGL环境
  • [Qualcomm][GPIO]高通芯片引脚相关知识记录
  • [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY
  • [百度百科]PCI-E的速度