jdk8 list 反转_Leecode每日刷题——反转链表

2709a6457325f333f201534d8c30bf89.png

No.206 反转链表

反转一个单链表,如下图所示:

56d5e35dd8cf21a82c37be83c8ff7dab.png

解题思路:根据题目要求,我们可以用迭代方法来解决,也可以用递归的方法来解决。此题的关键在于我们要利用链表的特征,采用合适的方法进行反转,如上图的例子所示,我们只需将输入的链表的箭头反转就可以得到我们想要的链表,我们可以依次交换两个元素把所有箭头反转过来。

迭代法:

4c92852255033a7b79b646fceae34215.png

类似于双向链表,我们需要加一个反向指针在各个点之间,所以我们让curr的下一个指向prev,prev变成cur,同时我们的链表向后移动,重复指针的变换,需要注意的是这里我们需要重命名cur = head, 用head= head.next完成链表的移动,以避免和curr.next混淆。

测试

06dbb477f989e32decda7cd4eecce6de.png

我们可以看到通过测试检验,我们可以用这一迭代的方法完成我们的要求。

递归法

f66c483e613e07da603852412f8abed9.png

同理,我们也可以用递归的方法完成链表的反转,在递归中,方法的核心依旧是重复使链表中的点完成 next 和 prev的互换。

欢迎查看Leecode学习总结其他文章:

Simone:Leecode每日刷题——合并有序链表

Simone:Leecode每日刷题——反转链表

Simone:Leecode每日刷题——反转二叉树

Simone:Leecode 每日刷题 — 合并两个二叉树

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值