时间限制:1秒
空间限制:32768K
热度指数:474959
题目描述
输入一个链表,从尾到头打印链表每个节点的值。
第一种思路,我们可以使用递归,每一次递归都判断下一个是否是空,如果是空就是尾部,然后添加到一个ArrayList里,最后返回
代码如下:
import java.util.ArrayList; public class Solution { ArrayList<Integer> arrayList = new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if(listNode != null){ this. printListFromTailToHead(listNode.next); arrayList.add(listNode.val); } return arrayList; } }
第二周思路,使用循环从头到尾遍历添加,然后反转,在打印 代码如下:
import java.util.ArrayList; import java.util.Collections; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = new ArrayList<Integer>(); while(listNode != null){ list.add(listNode.val); listNode = listNode.next; } Collections.reverse(list);//使用Collections的reverse方法,直接将list反转 return list; } }