zoukankan      html  css  js  c++  java
  • 剑指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     }
  • 相关阅读:
    appium工作原理
    Python文件读写模式
    Redis info 参数详解
    MySQL show status 参数详解
    Monit : 开源监控工具介绍
    Ansible(三)
    Ansible(二)
    Ansible(一)
    使用python实现后台系统的JWT认证(转)
    微信公众号-5秒内不回复测试并处理方案,顺便复习php 时间执行
  • 原文地址:https://www.cnblogs.com/huanglf714/p/11068259.html
Copyright © 2011-2022 走看看