题目描述
输入一个链表,从尾到头打印链表每个节点的值。
解题思路
- 递归;
- 用栈。
这里递归不是尾递归,所以和用栈效果一样,不过代码非常简洁。
递归中用的 list 是同一个,所以 list 的初始化在函数体外。
- 递归:
import java.util.ArrayList; public class Solution { private ArrayList<Integer> list = new ArrayList<>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if (listNode != null) { printListFromTailToHead(listNode.next); list.add(listNode.val); } return list; } }
- 用栈:
import java.util.ArrayList; import java.util.Stack; public class Solution { private ArrayList<Integer> list = new ArrayList<>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if (listNode == null) return list; Stack<Integer> stack = new Stack<>(); while (listNode != null) { stack.push(listNode.val); listNode = listNode.next; } while (!stack.isEmpty()) list.add(stack.pop()); return list; } }
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于