题解 | #从尾到头打印链表#
从尾到头打印链表
https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035
import java.util.*; /** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> res = new ArrayList<Integer>(); //re(listNode,res);//递归 //栈 Stack<Integer> stack = new Stack<Integer>(); while(listNode!=null){ stack.push(listNode.val); listNode=listNode.next; } while(!stack.isEmpty()){ res.add(stack.pop()); } return res; } public void re(ListNode listNode,ArrayList<Integer> list){ if(listNode != null){ re(listNode.next,list); list.add(listNode.val); } } }
思路1:递归
思路2:栈
时间:O(n)
空间:O(n)
#剑指offer#