力扣

技术力扣 力扣 - 剑指 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)

相关推荐

  • 电脑手机互传文件,手机同电脑怎么互传文件

    技术电脑手机互传文件,手机同电脑怎么互传文件日常生活中,我们经常会遇到手机和电脑互传文件的场景,可以使用传统的数据线传送方法,也可以使用软件进行传输电脑手机互传文件。方法一:使用数据线一直都是使用手机和电脑进行文件传输的

    生活 2021年10月24日
  • Python如何爬取抖音APP热点榜数据

    技术Python如何爬取抖音APP热点榜数据Python如何爬取抖音APP热点榜数据,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。今天给大家

    攻略 2021年10月26日
  • Oracle如何向PostgresQL移植

    技术Oracle如何向PostgresQL移植这篇文章主要为大家展示了“Oracle如何向PostgresQL移植”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle如

    攻略 2021年11月26日
  • Vue正则写法是什么

    技术Vue正则写法是什么这篇文章主要讲解了“Vue正则写法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue正则写法是什么”吧!前言正则表达式,又称规则表达式。它

    攻略 2021年11月1日
  • iOS如何使用Photo应用

    技术iOS如何使用Photo应用这篇文章将为大家详细讲解有关iOS如何使用Photo应用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、步骤执行:1、首先要创建一个SingleVie

    攻略 2021年10月21日
  • 如何用web3.js保存以太网区块链中的数据

    技术怎样用web3.js在以太坊区块链上保存数据这篇文章将为大家详细讲解有关怎样用web3.js在以太坊区块链上保存数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们

    攻略 2021年12月14日