剑指Offer第三题:从尾到头打印链表

问题描述

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。、

问题分析

  • 题目要求需要一个链表,于是我们先构造一个链表先。
  • 1 class ListNode {
    2         int val;
    3         ListNode next = null;
    4 
    5         ListNode(int val) {
    6             this.val = val;
    7         }
    8 }
  • 返回一个ArrayList?ArrayList是什么??ArrayList简单的理解就是一个数组,可以操作的数组。
  • 要求是从尾部到头部返回,大家都是知道的,链表是单向性,只能够由上一个节点访问下一个节点,不能由此节点访问上一个节点。如果每取一个节点都重新遍历一遍链表,那么开销十分的大。

算法分析

  • 先遍历链表一遍,由一个足够大的一维int数组由前到后存储每一个节点的值val。
  • 然后将int数组逆向输出到ArrayList,问题解决

源代码

 1 public class Solution {
 2     public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
 3            int number=0;
 4         int []index=new int[1000];
 5         int i=0;
 6         while(listNode!=null) {
 7             index[i]=listNode.val;
 8             listNode=listNode.next;
 9             number++;
10             i++;
11         }
12         ArrayList<Integer> newNode = new ArrayList<>();
13         for(int j=number-1;j>=0;j--) {
14             newNode.add(index[j]);
15         }
16         return newNode;
17     }
18 }

运行截图

 

ps:转载标明出处

 

posted @ 2018-09-01 18:38  轻抚丶两袖风尘  阅读(91)  评论(0编辑  收藏  举报