注:此博客不再更新,所有最新文章将发表在个人独立博客limengting.site。分享技术,记录生活,欢迎大家关注
题目描述
输入一个链表,从尾到头打印链表每个节点的值。
**思路:**先读入的最后打印出,先进后出问题用栈实现或者用递归实现
一、用栈实现
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack = new Stack<Integer>();
while (listNode != null) {
stack.push(listNode.val);
listNode = listNode.next;
}
ArrayList<Integer> list = new ArrayList<>();
while(!stack.isEmpty())
list.add(stack.pop());
return list;
}
}
运行时间:16ms
占用内存:9176k
二、用递归实现
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<>();
if (listNode != null) {
list = printListFromTailToHead(listNode.next);
list.add(listNode.val);
}
return list;
}
}
运行时间:13ms
占用内存:9220k