题解 | #反转链表#

反转链表

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);
        }
    }
#负能量警告#
全部评论

相关推荐

我也曾抱有希望:说的好直白
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务