美文网首页
面试题06. 从尾到头打印链表

面试题06. 从尾到头打印链表

作者: 阿星啊阿星 | 来源:发表于2020-02-14 15:40 被阅读0次

    从尾到头打印链表

    题目描述

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


    示例:

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


    提示:
    0 <= 链表长度 <= 10000

    转载来源:力扣(LeetCode)


    题目分析

    题目要求逆序输出链表哟,因为刚刷了拿到翻转链表的题,所以一想就想到先把链表翻转,然后在把他们放进队列里面,FIFO(First In First Out),搞定,然后仔细一想,我TM这不脱裤子放屁多此一举吗,和FIFO对应的是栈的LIFO(Last In First Out),遍历链表,逐个压栈,然后因为这里要求返回的是int数组,而不是打印出来,所以调用了一下Stack.reverse.toIntArray()将栈翻转再转成数组,如果是直接打印的话只需要将栈里的元素逐个pop打印就可以,比翻转链表代码简洁多了...

    import java.util.*
    class Solution {
        fun reversePrint(head: ListNode?): IntArray {
            val stack = Stack<Int>()
            var now = head
            while(now != null){
                stack.push(now.`val`)
                now = now.next
            }
            stack.reverse()
            return stack.toIntArray()
        }
    }
    

    做完题目肯定是要看一下题解的,看到题解里面出现了递归两字,顿时想到了另外一种做法(做题少的后果就是不给提示不会做),伪代码如下(代码也差不多,意思意思就不写了):

    fun(head)
        head 为空
            结束
        fun(head.next)
        输出head.val
    

    代码文件


    相关文章

      网友评论

          本文标题:面试题06. 从尾到头打印链表

          本文链接:https://www.haomeiwen.com/subject/irzdfhtx.html