• 剑指offer:从尾到头打印链表


    题目

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

    解题思路

    在不改变链表结构的前提下,因为单向链表本身的结构是从头到尾的,现在用从尾到头遍历打印,可以联想到“先进后出”,

    因此我们可以用栈保存链表节点,然后在输出栈即可。

    根据这个思路又可以联想到递归本质上就是一个栈结构,于是又可以用递归来实现,我们要输出一个节点,先输出其后面的结点。

    代码

    思路一:栈实现

     1     public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
     2         ArrayList<Integer> arrayList = new ArrayList<>();
     3         Stack<ListNode> stack = new Stack<>();
     4         while(listNode != null){
     5             stack.push(listNode);
     6             listNode = listNode.next;
     7         }
     8         while(!stack.empty()){
     9             arrayList.add(stack.pop().val);
    10         }
    11         return arrayList;
    12     }

    思路二:递归实现

    1     ArrayList<Integer> arrayList = new ArrayList<>();
    2     public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
    3         if(listNode!=null){
    4             printListFromTailToHead(listNode.next);
    5             arrayList.add(listNode.val);
    6         }
    7         return arrayList;
    8     }
  • 相关阅读:
    Javascript注销Window认证登录信息
    Asp.Net文件下载
    Python Beginner's Guide
    StructureMap
    Telerik RadGanttView示例
    SharePoint Server 2010 备份还原和部署
    Bootstrap
    Javascript面向对象基础
    .NET Regular Expressions
    Javascript Arguments Callee Caller
  • 原文地址:https://www.cnblogs.com/huanglf714/p/11068259.html
Copyright © 2020-2023  润新知