力扣

技术力扣 力扣 - 剑指 Offer 24. 反转链表题目
剑指 Offer 24. 反转链表
思路1(迭代)使用一个指针pre指向上一个节点,初始值为null,然后遍历链表,一边遍历一遍交换指针指向:

强制按钮-剑指提供24。反转链表

题目

指剑要约24。反转链表

思路1(迭代)

使用指针pre指向前一个节点,初始值为空,然后遍历链表,同时遍历交换指针指向:

首先使用下一个节点到下一个节点。

然后将cur指向pre。

然后将pre指向cur。

最后,将cur指向nextNode可以完成两个节点的反转。

我们遍历整个链表,对所有节点都这样做,然后把整个链表倒过来。

代码

解决方案类{

公共列表节点反转列表(列表节点头){ 0

//当有多个元素时,确保链表是反转的。

if(head==null | | head . next==null){ 0

返回头;

}

//Common pre指针,存储前一个节点,指向null,因为需要保证第一个元素的下一个可以指向null

//反转过程如下:先存储当前节点的nextNode,然后将当前元素的next指向pre,最后将pre指向head,head指向nextNode。

ListNode pre=null

趁着(头!=null){ 0

ListNode nextNode=head.next

head.next=pre

pre=head

head=nextNode

}

//此时,head指向null,pre指向反转的head节点。

返回前置;

}

}

复杂度分析

时间复杂度:\ O(N)\)

空间复杂度:\ O(1)\)

思路2(递归)

递归比迭代稍微复杂一点。

第一步是递归链接列表。如果你遇到列表的末尾,你将结束递归。这时,你得到的末端节点是倒头节点,所以我们在每一层递归将这个节点传递返回.

当递归到达链表末尾时,我们从链表末尾修改指针:将当前节点下一个节点的下一个指针指向当前节点,即cur.next.next=cur,然后将当前节点cur的指针指向null(如果不指向null,反转后的最后一个节点就不会指向null,从而形成循环)。递归的每一层都是这样做的,最后链表可以反转。

注意:

返回值是最后一个节点。

同时,将cur的下一个指向null。

代码

解决方案类{

公共列表节点反转列表(列表节点头){ 0

//只有链表节点数大于1时,才需要反转。

if(head==null | | head . next==null){ 0

返回头;

}

//反转链接列表

返回dfs(负责人);

}

公共列表节点dfs(列表节点节点){ 0

//遍历到最后一个节点时开始返回。

if(node . next==null){ 0

返回节点;

}

//获取链表的最后一个节点,也是未来反转后的头节点。

list node last=DFS(node . next);

//修改链表指针的指向。

//将下一个节点的下一个指向当前节点

node . next . next=node;

//将当前节点指向空

//如果不设置为空,最后一个节点不能指向空,导致循环链表的存在。

node.next=null

最后返回;

}

}

复杂度分析

时间复杂度:\ O(N)\)

复杂性:\(O(N)\),递归所需的堆栈空间。

我走得很慢,但我从不后退!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/103400.html

(0)

相关推荐

  • 如何理解携程架构部开源的配置中心Apollo

    技术如何理解携程架构部开源的配置中心Apollo这篇文章主要讲解了“如何理解携程架构部开源的配置中心Apollo”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解携程

    攻略 2021年10月20日
  • 笔记本电脑性能排行,笔记本电脑价格及性能排行

    技术笔记本电脑性能排行,笔记本电脑价格及性能排行笔记本价格和性能排行?感觉您的提问有些问题..数码产品一般是一分钱一分货笔记本电脑性能排行,性能是和价格挂钩的,性能越高的笔记本,其价格肯定也越高,想低价格买到高性能的笔记

    生活 2021年10月25日
  • 笔记本键盘失灵怎么办,笔记本电脑键盘失灵怎么办

    技术笔记本键盘失灵怎么办,笔记本电脑键盘失灵怎么办笔记本键盘按键失灵可分为2种情况笔记本键盘失灵怎么办:比较常见的按字母键会显示成数字的情况发生,遇到最多的就是这种情况了;另外一种情况是笔记本键盘出现了问题,具体解决方法

    生活 2021年10月20日
  • 支付宝申请商家二维码,怎么开通支付宝商家收钱码

    技术支付宝申请商家二维码,怎么开通支付宝商家收钱码需要开通支付宝商家收钱码支付宝申请商家二维码,需要自己是支付宝商家,方法如下: 1、首先在手机上找到并打开支付宝APP客户端。 2、然后在支付宝页面中选择红色箭头所指处的

    生活 2021年10月24日
  • 美版鞋码对应中国鞋码,美国鞋号uk4是中国鞋号多少

    技术美版鞋码对应中国鞋码,美国鞋号uk4是中国鞋号多少首先说明UK是英国鞋码的代号美版鞋码对应中国鞋码,为英国的英文united kingdom的缩写,美国鞋码的代号是US码,为USA的缩写,UK4码相当于220码,欧码

    生活 2021年10月23日
  • 黄骨鱼的做法,怎样才能做出好吃又营养的黄骨鱼

    技术黄骨鱼的做法,怎样才能做出好吃又营养的黄骨鱼食材:鲜活黄骨鱼(一般一餐一个人可以吃两至四条黄骨鱼的做法,最好购买新鲜的,可以自己拿回家处理,也可让卖家代劳) 配料:姜、葱、蒜、植物油、盐、味精、酱油、豆瓣酱、红剁椒(

    生活 2021年10月27日