剑指 Offer II 024. 反转链表

力扣打卡:剑指 Offer II 024. 反转链表

解题思路

理解好反转的思路,理解好递归反转的作用

  • 每一步需要做的动作
  • head.next.next = head
  • head.next = null
  • 因为要返回最后一个节点,也就是新的头节点,那么基础条件是
  • head==null || head.next==null 第一个判断反之空指针异常,第二个判断是判断这个节点是否为最后一个节点了
  • 如果是,那么返回最后一个节点,然后按照定义进行反转

整体思路:

  • 递归找到最后一个节点,返回最后一个节点
  • 从最后一个节点开始,进行反转的动作
  • head.next.next = head; head.next=null
  • 最后一直传递最后一个节点 return last;

代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head==null || head.next==null) return head; //判断是否为null,即是否为最后一个节点元素了
        ListNode last = reverseList(head.next);
        head.next.next = head; // 重新指向后一个
        head.next = null; // 进行破环操作
        return last; // 返回最后一个节点,也就是新的头节点
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值