剑指 Offer 24. 反转链表

题目

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

阅题思考

需要初始化哪些变量?是否为全局变量?用什么数据类型?作用是什么?
迭代和递归两种做法。
迭代:定义3个局部变量。pre = null,cur = head,next = null;
整体思路描述&哪些事需要封装成一个函数?
https://zhuanlan.zhihu.com/p/240694166
https://vdn3.vzuu.com/SD/cc3364bc-23bf-11eb-8c9f-eed74461d6e1.mp4?disable_local_cache=1&bu=078babd7&c=avc.0.0&f=mp4&expiration=1652805080&auth_key=1652805080-0-0-6ea3298599fcd50d5275de3745a8aa15&v=tx&pu=078babd7

代码答案

在这里插入代码片

题后总结

思路实现过程是否有磕绊?
迭代的时候先操作谁?
先给next赋值为cur.next,因为接下来会改变cur的next变量,需要把原来的先存起来。
最后返回谁?
迭代到最后的结果(cur == null)应该是pre为原链表倒数第一个节点,应该返回cur;
是否一题多解?
可以递归做这题。

https://blog.algomooc.com/024.html

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head.next == null){
            return head;
        }
        ListNode cur = reverseList(head.next);
        head.next.next = head;
        // head 原来的下一节点指向自己,所以 head 自己本身就不能再指向原来的下一节点了
        // 否则会发生无限循环
        head.next = null;
        return cur;
    }
}

是否多提一解?

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值