剑指Offer 24. 反转链表
本题是一道简单题,解析本题的原因是本题的思想可以用于解决25. K 个一组翻转链表这道Hard
题。
先看题目描述。定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL |
限制:
0 <= 节点个数 <= 5000 |
注意:本题与主站 206 题相同:https://leetcode-cn.com/problems/reverse-linked-list/
思路
比较容易想到的思路是双指针迭代,如同官方解析所说的:
假设链表为
在遍历链表时,将当前节点的
class Solution { |
接下来换一种思路,我们新建一个节点prev
来指向整个链表的头部,curr
初始化为链表的头结点,然后每次只需将curr
的下一个节点摘除,链接至prev
之后即可。
prev-->1(curr)-->2-->3-->null |
根据上述过程,得到另一个版本的迭代算法:
class Solution { |
我想,这个算法可能更容易理解和编写代码,接下来将使用这个思想解决
复杂度
时间复杂度线性,空间复杂度常数级。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿日哥的向量空间!