zoukankan      html  css  js  c++  java
  • 力扣leetcode206题,反转链表递归方式Java代码细节分析。

    细节分析往往是算法代码编写的关键,反转链表的关键是如下两行代码:

    head.next.next=head;
    //head=null; //这步一定要注意,不然末尾少了一个指向null的连接。
    head.next=null;//如果没有这一步,新链表的最后一个节点会出现环
    /**
     * 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;
            }
            ListNode next= reverseList(head.next);
            head.next.next=head;
            //head=null; //这步一定要注意,不然末尾少了一个指向null的连接。
            head.next=null;//如果没有这一步,新链表的最后一个节点会出现环。
            return next;
        }
    }

    递归每层的变化图如下:

  • 相关阅读:
    Activiti(三)流程变量和流程实例
    vue(生命周期,钩子方法,组件)
    Vue(指令篇)
    Activiti(二)
    使用MyBatis_Plus生成代码
    activiti
    多线程常见面试题总结
    Dubbo集群-负载均衡
    dubbox入门
    事务的传播行为,隔离级别以及锁机制
  • 原文地址:https://www.cnblogs.com/mkl34367803/p/14657299.html
Copyright © 2011-2022 走看看