• 00003.从尾到头打印链表
  • 发布于 1个月前
  • 36 热度
    0 评论

题目描述

输入一个链表,按链表值从尾到头的顺序返回一个 ArrayList。

解题思路:

链表要么暴力,要么递归。自己时刻时刻记住这句话。从尾到头,说明正向进入反向出来。第一反应栈的应用,如何把栈利用起来,可以暴力循环链表,然后每次放入栈中,然后再循环栈,然后塞入ArrayList中。也算是个好办法。但是仔细想想递归也是伴随着栈的出入,何不如用递归呢。

看一张图:

然后配合代码看秒懂:

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
import java.util.*;
public class Solution {
    private ArrayList<Integer> arr = new ArrayList<Integer>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(null != listNode) {
            printListFromTailToHead(listNode.next);
            //递归到最后一个的时候反向依次退出前将此元素添加至ArrayList内。
            arr.add(listNode.val);
        }
        return arr;
    }
}

用户评论