No.206 反转链表
反转一个单链表,如下图所示:
解题思路:根据题目要求,我们可以用迭代方法来解决,也可以用递归的方法来解决。此题的关键在于我们要利用链表的特征,采用合适的方法进行反转,如上图的例子所示,我们只需将输入的链表的箭头反转就可以得到我们想要的链表,我们可以依次交换两个元素把所有箭头反转过来。
迭代法:
类似于双向链表,我们需要加一个反向指针在各个点之间,所以我们让curr的下一个指向prev,prev变成cur,同时我们的链表向后移动,重复指针的变换,需要注意的是这里我们需要重命名cur = head, 用head= head.next完成链表的移动,以避免和curr.next混淆。
测试
我们可以看到通过测试检验,我们可以用这一迭代的方法完成我们的要求。
递归法
同理,我们也可以用递归的方法完成链表的反转,在递归中,方法的核心依旧是重复使链表中的点完成 next 和 prev的互换。
欢迎查看Leecode学习总结其他文章:
Simone:Leecode每日刷题——合并有序链表
Simone:Leecode每日刷题——反转链表
Simone:Leecode每日刷题——反转二叉树
Simone:Leecode 每日刷题 — 合并两个二叉树