[LeetCode]剑指 Offer 06. 从尾到头打印链表

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]剑指 Offer 06. 从尾到头打印链表相关的知识,希望对你有一定的参考价值。

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

输入:head = [1,3,2]
输出:[2,3,1]

限制:

0 <= 链表长度 <= 10000

题解一:

    /**
     * 剑指 Offer 06. 从尾到头打印链表
     * 
     * @param head 链表头节点
     * @return 链表数据逆序数组
     */
    public int[] reversePrint(ListNode head) 
        // 顺序遍历链表并将值放入栈中,当遍历完链表后依次将栈中元素弹出放进数组并返回
        Stack<Integer> dataStack = new Stack<>();
        ListNode cur = head;

        while (cur != null) 
            dataStack.push(cur.val);
            cur = cur.next;
        

        int size = dataStack.size();
        int[] res = new int[size];
        for (int i = 0; i < size; i++) 
            res[i] = dataStack.pop();
        
        return res;
    

题解二:

    private final List<Integer> integerList = new ArrayList<>();

    /**
     * 剑指 Offer 06. 从尾到头打印链表
     *
     * @param head 链表头节点
     * @return 逆序链表值数组
     */
    public int[] reversePrint(ListNode head) 
        /*
         * 递归:利用递归逐层返回的特点,使用辅助方法一直遍历到链表尾,
         * 逐个返回逆序的节点,将节点的值添加到集合中,最后遍历集合元素得到结果数组
         */
        recursion(head);
        int size = integerList.size();
        int[] res = new int[size];
        for (int i = 0; i < size; i++) 
            res[i] = integerList.get(i);
        
        return res;
    

    /**
     * 递归遍历链表
     *
     * @param cur 当前节点
     */
    void recursion(ListNode cur) 
        if (cur == null) 
            return;
        
        recursion(cur.next);
        integerList.add(cur.val);
    

以上是关于[LeetCode]剑指 Offer 06. 从尾到头打印链表的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Algorithm 剑指 Offer 06. 从尾到头打印链表

[LeetCode]剑指 Offer 06. 从尾到头打印链表

LeetCode 剑指offer 面试题06. 从尾到头打印链表

LeetCode 剑指offer 面试题06. 从尾到头打印链表

Leetcode剑指 Offer 06. 从尾到头打印链表(辅助栈)

LeetCode -剑指Offer 06 - 从尾到头打印链表 - java - 细喔