剑指 Offer 06. 从尾到头打印链表

2023-11-15

从尾到头打印链表

蠢想法

在这里插入图片描述

解题思路

在这里插入图片描述
的节点顺序已经反转过来了

package swordPointingToTheOffer;
import java.util.Stack;	//引用栈

public class six {
    //初始化
    Stack<Integer> stack = new Stack<Integer>();
    //进栈
    public void push(int node){
        stack.push(node);
    }
    //出栈
    public int pop(){
        return stack.pop();
    }
//    //取栈顶值(不出栈)
//    stack.peek();
//    //判断栈是否为空
//    stack.isEmpty()
    /**
     * 链表节点
     */
    public static class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
        }
    }

    public int[] reversePrint(ListNode head) {
        ListNode node = head;
        Stack<Integer> st = new Stack<Integer>();
        while (node != null) {
            //压栈
            st.push(node.val);
            //链表指针后移
            node = node.next;
        }
        int i = 0;
        //弹栈到数组里面
        int[] res = new int[st.size()];
        while (i < res.length) {
            res[i++] = st.pop();
        }
        return res;
    }

    public static void main(String[] args) {
        //构建链表 (1->3->2)
        ListNode head = new ListNode(1);
        head.next = new ListNode(3);
        head.next.next = new ListNode(2);
        six sol = new six();
        //反转
        int[] res = sol.reversePrint(head);
        for (int x : res) {
            System.out.println(x);
        }
    }
}


在这里插入图片描述

将Stack中的元素pop出来存入数组int[]

递归隐式使用栈

在这里插入图片描述

package swordPointingToTheOffer;
import java.util.ArrayList;
import java.util.Stack;	//引用栈

public class six {
    /**
     * 链表节点
     */
    public static class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
        }
    }

    //数组,用于存放弹栈的资源。。。
    ArrayList<Integer> tmp = new ArrayList<Integer>();

    public int[] reversePrint2(ListNode head) {
        recur(head);
        int[] res = new int[tmp.size()];
        for (int i = 0; i < tmp.size(); i++) {
            res[i] = tmp.get(i);
        }
        return res;
    }

    void recur(ListNode head) {
        if (head == null) {
            return;
        }
        recur(head.next);
        //弹栈到数组里面
        tmp.add(head.val);
    }

    public static void main(String[] args) {
        //构建链表 (1->3->2)
        ListNode head = new ListNode(1);
        head.next = new ListNode(3);
        head.next.next = new ListNode(2);
        six sol = new six();
        //反转
        int[] res = sol.reversePrint2(head);
        for (int x : res) {
            System.out.println(x);
        }
    }
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

剑指 Offer 06. 从尾到头打印链表 的相关文章

随机推荐

  • element ui 多张图片上传、回显、删除

    element ui 多张图片上传 回显 删除 前端文件上传 1 展示部分
  • 计算机为什么负数不用减一,计算机的加减乘除(原码反码补码)

    计算机对数的操作 以二进制为基 因为电子原件只能表达0 1 开或关这两种状态 如果学过模电和数电 对此的理解会更深 比如说十进制9 在计算机里不可能单独记个9 而是记录成0000 1001 第一位符号位 0表示正数 但是 9 在计算机里记得
  • TensorRT部署神经网络

    TensorRT部署神经网络 大佬的讲解记录一下 基础知识 TensorRT使用例子 TensorRT加速模型 示例代码 这个脚本向你展示了如何使用 torch2trt 加速 pytorch 推理 截止目前为止 torch2trt 的适配能
  • swagger2 注解说明

    Api 用在请求的类上 表示对类的说明 tags 说明该类的作用 可以在UI界面上看到的注解 value 该参数没什么意义 在UI界面上也看到 所以不需要配置 ApiOperation 用在请求的方法上 说明方法的用途 作用 value 说
  • 如何用硬币模拟1/3的概率,以及任意概率?

    突然想起一个挺有意思的事 如何用硬币模拟1 3的概率 甚至任意概率 之前和朋友偶然间谈到如何用硬币模拟任何概率 当时以为是不可能的 因为硬币有两面 模拟的结果底数一定是2 n 今天又回顾了某个经典的条件概率问题 突然想到用硬币模拟任意概率是
  • IT职业发展路线

    网上找的
  • 第九课移动与相机

    讲的是shift 物体的移动轴 则摄像机与物体一起运动 设置了个聚光灯 本来要把聚光灯和摄像机锁定 但是不知为何 视频教程上的lock选项 在UE4编辑器没有 应该是版本不同的缘故
  • JS中document.createElement()用法及注意事项

    今天处理了一个日期选择器的ie和ff的兼容问题 本来这种情况就很难找错误 找了好久才把错误定位到js中创建元素的方法document createElement 这个方法在ie下支持这样创建元素 var inputObj document
  • Windows下开启Astra 摄像头的三种方式

    Windows下开启Astra摄像头有三种方式 第一种 使用官方提供的Orbbec Viewer软件 在此可以修改设备分辨率并且支持多台设备同时使用 非常方便 具体效果如下 该程序直接去奥比中光官网下载即可 官网也有具体的使用的手册 答主在
  • gcc compiler error messages

    Summarizing the gcc errors I encountered to be continued 1 dereferencing pointer to incomplete type You have written som
  • IP包流量分析程序

    使用套接字编程实现捕获一段时间内以本机为源地址或目的地址的IP数据包 不包括以广播形式发出的数据包 统计IP数据包的信息 列出本机与其他主机之间不同协议类型IP数据包的数量 及流量 以源地址 目的地址 协议类型 数据包数量 流量的格式输出统
  • failed to load response data出现的问题

    分片上传的时候 状态码请求是200的状态 但是 出现了 failed to load response data 没有response的返回 原因是 我分片的 每片大小太大了 分成了10M 所以出现了这个问题 const chunkSize
  • 【2-3】《Java基础语法》——二进制、变量、数据类型、标识符、数据类型转换、特殊变量定义、方法、运算符、变量作用域、编程规范、转义字符

    文章目录 基础语法 一 二进制 1 补码 2 二进制与十进制的转换 二 变量概述 三 数据类型 1 分类 2 范围 四 标识符 1 命名规则 2 Java中的关键字 3 定义变量 4 变量练习 五 数据类型转换 六 特殊变量定义 1 flo
  • nn.Module模块

    1 模块化接口nn torch nn是pytorch中专门为神经网络设计的模块化接口 nn构建于autograd之上 可以用来定义和运行神经网络 2 nn Module nn Module是nn中十分重要的类 包含网络各层的定义及forwa
  • 大神之路-起始篇

    欢迎关注 WeiyiGeek 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 涉及 网络安全运维 应用开发 物联网IOT 学习路径 个人感悟 等知识 花开堪折直须折 莫待无花空折枝 作者主
  • rocketMQ启动报错,JavaHotSpot(TM) 64-Bit Server VM warning错误: 找不到或无法加载主类 Files\jdk1.8.0_161\\jre\lib\ext

    Java HotSpot TM 64 Bit Server VM warning Using the DefNew young collector with the CMS collector is deprecated and will
  • foreach用法_R语言--并行计算包(parallel、foreach)

    R语言是单核计算语言 在数据建模或计算过程中 常常出现相同或相似任务的重复计算 一般操作是for循环处理或采用apply族函数处理 为了更快完成计算 采用并行计算是更优的选择 本文采用R语言中的parallel包与foreach包实现并行计
  • ueditor-后台配置项返回格式出错,上传功能将不能正常使用!

    一 服务器环境 php centos apache 二 症状 ueditor编辑界面可以显示 但单图片上传按钮点击没反应 多图片上传显示 后台配置项返回格式出错 上传功能将不能正常使用 三 分析 1 打开浏览器调试模式 显示 后台配置项返回
  • Zookeeper——zookeeper基础

    在深入了解ZooKeeper的运作之前 让我们来看看ZooKeeper的基本概念 我们将在本章中讨论以下主题 Architecture 架构 Hierarchical namespace 层次命名空间 Session 会话 Watches
  • 剑指 Offer 06. 从尾到头打印链表

    从尾到头打印链表 蠢想法 解题思路 的节点顺序已经反转过来了 栈 package swordPointingToTheOffer import java util Stack 引用栈 public class six 初始化 Stack