校招准备系列:每天一道算法题(12)-从尾到头打印链表
2017-10-04 21:56
561 查看
从尾到头打印链表
此题来自 剑指offer题目描述
输入一个链表,从尾到头打印链表每个节点的值。
方法一:递归
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; } }
方法二:遍历
/** * 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> list = new ArrayList<Integer>(); ListNode pre = null; ListNode next = null; while(listNode!=null){ next = listNode.next; listNode.next = pre; pre = listNode; listNode = next; } while(pre!=null){ list.add(pre.val); pre = pre.next; } return list; } }
方法三:
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; } }
相关文章推荐
- 校招准备系列:每天一道算法题(14)-合并两个排序的链表
- 校招准备系列:每天一道算法题(3)
- 校招准备系列:每天一道算法题(6)-连续最大和
- 校招准备系列:每天一道算法题(15)-求1+2+3+...+n
- 校招准备系列:每天一道算法题(7)-末尾0的个数
- 校招准备系列:每天一道算法题(1)
- 校招准备系列:每天一道算法题(5)-两数之和
- 校招准备系列:每天一道算法题(10)-二维数组查找
- 校招准备系列:每天一道算法题(8)-进制转换
- 校招准备系列:每天一道算法题(13)-斐波那契数列
- 校招准备系列:每天一道算法题(4)
- 校招准备系列:每天一道算法题(9)-单例
- 校招准备系列:每天一道算法题(2)
- 校招准备系列:每天一道算法题(11)-替换空格
- 算法系列——从尾到头打印链表(剑指offer)
- 跟我一起学算法系列5---从尾到头打印链表
- 每天一道算法题(12)——和为n的连续正数序列或者随机数
- 二维数组中的查找、空格替换、从尾到头打印链表 --漫漫算法路 刷题篇
- 每天学习一算法系列(6) (输入一个整数和一棵二元树,从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径,打印出和与输入整数相等的所有路径)
- 每天一道算法题——合并两个排序的链表