题解 | #反转链表#

反转链表

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

一种非常low的办法:


public ListNode ReverseList(ListNode head) {
        if (head == null) { // 为空情况
            return null;
        }
        if (head.next == null) { // 无子节点情况,即只有它1个
            return head;
        }
        List<ListNodelist = new LinkedList<>();
        getChildNode(head, list); // 全部添加入list
        for (int i = 0; i <= list.size() - 2; i++) {  // 从后向前,依次将前一个设为后一个的next节点
            list.get(list.size() - 2 - i).next = null;  // 需要先清掉前一个的 next节点,否则下一条执行后会形成  2.next = 3 -> 3.next = 2 -> 2.next = 3 ...... 循环 
            list.get(list.size() - 1 - i).next = list.get(list.size() - 2 - i);
        }
        return list.get(list.size() - 1); // 返回list最后一个元素,即新的头节点
    }

    private void getChildNode(ListNode nodeList<ListNodelist) {
        list.add(node);
        if (node.next != null) {
            getChildNode(node.next, list);
        }
    }
#负能量警告#
全部评论

相关推荐

这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 12:10
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务