力扣

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

相关推荐

  • CF1604A Era

    技术CF1604A Era CF1604A Era洛谷题面
    题目大意
    给一个长度为 \(n\) 的序列 \(a_1,a_2,\dots,a_n\),每次可以往序列中插入任意个整数,求最少插入多少个整数时

    礼包 2021年11月7日
  • Vue正则写法是什么

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

    攻略 2021年11月1日
  • 13. 罗马数字转整数

    技术13. 罗马数字转整数 13. 罗马数字转整数罗马数字包含以下七种字符:I,V,X,L,C,D和M。
    字符 数值
    I 1
    V 5
    X

    礼包 2021年12月2日
  • 怎么通过Java代码来理解RPC

    技术怎么通过Java代码来理解RPC本篇内容主要讲解“怎么通过Java代码来理解RPC”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么通过Java代码来理解RPC”吧!这整

    攻略 2021年11月15日
  • 公顷怎么读,公里公顷公亩的背读方式

    技术公顷怎么读,公里公顷公亩的背读方式1.面积单位 面积单位有平方公里公顷怎么读、平方米、平方分米、平方厘米、平方毫米等。它们之间的换算关系是: 1平方公里=1000000平方米; 1平方米=100平方分米;

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

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

    攻略 2021年12月14日