题解 | #反转链表#

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

public ListNode ReverseList(ListNode head) {
       if(head == null || head.next == null){
            //当确保时节点的最后一个节点时作为方法返回值返回
            return head;
        }
        ListNode resultNode = ReverseList(head.next);
        head.next.next = head;
        head.next = null;
        return resultNode;
} 

1、将 1->2->3->4比作要进行处理的节点
2、首先可以肯定的时方法最终返回的头节点时4
3、所以要找到当前节点的最后一个节点将其作为方法的最终返回值
4、故使用递归,当传入的节点没有下一个节点时,确保当前节点是最后一个节点,将其作为方法的返回值返回
5、在拿到方法返回值之后要做的就是将剩下节点的下一个节点的下一个指向节点指为当前节点
6、因为使用的是递归,在最后一个节点的方法执行完毕之后,倒数第二节节点的方法便开始继续执行剩下的部分
7、所以方法的head每一次都是当前节点的前一个节点,我们要做的就是把当前节点的被指向搞好就行。

全部评论

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务