面试题 3:从尾到头打印链表

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

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

限制:
0 <= 链表长度 <= 10000

两种思路:
遍历的顺序从头到尾的顺序,而输出却是从尾到头,同“先进后出”操作类似。
第一种:使用栈来解决。
第二种:递归,递归本质也是一个栈的结构。

class Solution {
    public int[] reversePrint(ListNode head) {
        ArrayList<Integer> list = new ArrayList<>();
        add(head, list);

        int[] print = new int[list.size()];
        for(int i = 0; i < list.size(); i ++)
            print[i] = list.get(i);
        return print;
    }
    private void add(ListNode listNode, ArrayList<Integer> list){
        if(listNode == null)
            return;
        add(listNode.next, list);
        list.add(listNode.val);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容