链表-倒序排列鏈表

2023-05-16

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

38

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

输入:head = [1,3,2]
输出:[2,3,1]

限制:

0 <= 链表长度 <= 10000`

这题我第一次看有点懵,看了很久还是有点懵。。。。。
之后看了解答,大致的思路是:
1.首先要认识到链表只能从前至后依次访问每个节点,不同与数组可以随便得到某个位置的元素;
2.很多时候,我们都知道栈的特点是“先进后出”,但却不知道怎么用,那么这道题就是一个很好的例子了,从尾到头反过来返回每个节点的值,我们便可以利用栈的特点,先讲链表的各个节点压栈,然后出栈,就ojbk了

/**
 * 这是对ListNode这个类一个简单的说明
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public int[] reversePrint(ListNode head) {
    	//首先是用到了集合框架的LinkedList,并且指定该容器只能往里面入Integer类型的数据
        LinkedList<Integer> stack = new LinkedList<Integer>();
        while(head != null) {
        	//将各个节点数据依次添加到栈的最后一个元素,每次添加,之前添加的节点数据便会往前挪一步,个人对这里的head.val不是很理解,
        	//知道是和上面的构造方法传入参数有关,但我感觉我好像少了一个知识点,联系不上来,希望有好心人可以帮忙解答一下
            stack.addLast(head.val);
            head = head.next;
        }
        //之后便是把栈的大小作为我们要返回的数组res的大小,
        //然后依次把栈的最后一个元素取到res里面去
        int[] res = new int[stack.size()];
        for(int i = 0; i < res.length; i++)
            res[i] = stack.removeLast();
    return res;
    }
}

作者:jyd
链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/solution/mian-shi-ti-06-cong-wei-dao-tou-da-yin-lian-biao-d/

//上面的方法是用到LinkedList的方法,可以实现与栈相同的操作,而下面的解法则是直接用栈了
```java
class Solution {
    public int[] reversePrint(ListNode head) {
        Stack<ListNode> stack = new Stack<ListNode>();
        ListNode temp = head;
        while (temp != null) {
            stack.push(temp);
            temp = temp.next;
        }
        int size = stack.size();
        int[] print = new int[size];
        for (int i = 0; i < size; i++) {
            print[i] = stack.pop().val;
        }
        return print;
    }
}

//再补充一种方法,是根据链表的内部结构直接写出来的
class Solution {
    public int[] reversePrint(ListNode head) {
        int number = 0;
        ListNode temp = head;
        while(temp!=null){
            number++;
            temp = temp.next;
        }
        int[] num = new int[number];
        ListNode temp1 = head;
        int var = number-1;
        for(int i = var; i >= 0; i--){
            num[i] = temp1.val;
            temp1 = temp1.next;
        }
        return num;
    }
}
/**
 * 这是对ListNode这个类一个简单的说明
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
 对ListNode的解释,一个类型为ListNode的节点,有类型为int的val,也有类型为ListNode的next,最后的一种方法是用了该链表的特性而写出来的,当链表的某个节点为null时,说明该节点为该链表的最后一个节点,以此求出链表有多少个节点,之后是倒序排列,比较简单

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/solution/mian-shi-ti-06-cong-wei-dao-tou-da-yin-lian-biao-b/


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

链表-倒序排列鏈表 的相关文章

  • 【MySQL | 基础篇】05、MySQL 事务详解

    目录 一 事务简介 二 事务操作 2 1 未控制事务 2 2 控制事务一 2 3 控制事务二 三 事务四大特性 四 并发事务问题 五 事务隔离级别 六 并发事务演示 6 1 脏读演示 6 2 不可重复读演示 6 3 幻读演示 一 事务简介
  • 【MySQL | 进阶篇】05、MySQL 视图、触发器讲解

    目录 一 视图 1 1 介绍 1 2 语法 1 2 1 演示示例 1 3 检查选项 1 3 1 CASCADED 级联 1 3 2 LOCAL 本地 1 3 3 示例演示 1 4 视图的更新 1 4 1 示例演示 1 5 视图作用 1 6
  • python 字典dict常用操作总结

    目录 1 创建字典 2 添加 修改 删除字典元素 3 访问元素 4 计算键的个数 5 其他常用操作 字典是一个包含了键 值对数据的集合 1 创建字典 可以直接使用一对花括号或者 dict 创建一个字典类型的数据 a 61 a 61 dict
  • 【MySQL | 进阶篇】08、InnoDB 引擎架构、事务原理及 MVCC 讲解

    目录 一 逻辑存储结构 二 架构 2 1 概述 2 2 内存结构 2 2 1 Buffer Pool 2 2 2 Change Buffer 2 2 3 Adaptive Hash Index 2 2 4 Log Buffer 2 3 磁盘
  • K8s 生产环境问题汇总及解决方案(持续更新 ing)

    目录 一 前端页面显示 503 Service Temporarily Unavailable 问题背景 解决方案 原理 二 Dockfile 构建镜像失败 xff1a When using COPY with more than one
  • 【MySQL | 进阶篇】09、MySQL 管理及常用工具(mysqladmin、mysqlbinlog、mysqldump 等)的使用

    目录 一 系统数据库 二 常用工具 2 1 mysql 示例 2 2 mysqladmin 示例 2 3 mysqlbinlog 示例 2 4 mysqlshow 示例 2 5 mysqldump xff08 数据备份 xff09 示例 2
  • 【Python | 基础语法篇】01、字面量、注释、变量、数据类型及转换

    目录 一 字面量 1 1 什么是字面量 1 2 常用的值类型 1 3 字符串 1 4 如何在代码中写它们 1 5 总结 二 注释 2 1 注释的作用 2 2 注释的分类 2 3 注释实战 2 4 总结 2 5 思考 三 变量 3 1 什么是
  • 【Python | 基础语法篇】02、标识符、运算符、字符串扩展及数据输入

    目录 一 标识符 1 1 什么是标识符 1 2 标识符命名规则 1 2 1 标识符命名规则 内容限定 1 2 2 标识符命名规则 大小写敏感 1 2 3 标识符命名规则 不可使用关键字 1 3 案例演示 1 4 变量命名规范 1 4 1 变
  • 【2023 阿里云云计算工程师 ACP 认证练习题库】01、VPC 专有网络题库

    目录 一 多选题 1 1 答案与解析 2 2 答案与解析 3 3 答案与解析 辑 4 4 答案与解析 5 5 答案与解析 6 6 答案与解析 7 7 答案与解析 8 8 答案与解析 9 9 答案与解析 10 10 答案与解析 11 11 答
  • 1.9模块

    第一关 模块的定义 任务描述 在Python程序的开发过程中 xff0c 为了代码维护的方便 xff0c 我们可以把函数进行分组 xff0c 分别放到不同的 py文件里 xff0c 这样 xff0c 每个文件包含的代码就相对较少 xff0c
  • 2.2 分布式文件系统HDFS

    编程要求 1 在HDFS中创建 usr output 文件夹 xff1b 2 在本地创建hello txt文件并添加内容 xff1a HDFS的块比磁盘的块大 xff0c 其目的是为了最小化寻址开销 xff1b 3 将hello txt上传
  • 3.2 电信数据清洗

    任务描述 对数据按照一定规则进行清洗 清洗规则 xff1a 处理数据中的时间戳 xff08 秒级 xff09 将其转化为 34 年 月 日 时 分 秒 34 这种格式 xff1b 处理数据中的省份编码 xff0c 结合mysql的表数据对应
  • 4.1 Hbase的安装与简单操作

    第一关 Hbase数据库的安装 1 首先要在官网下载好Hbase的安装包 xff08 educoder已装到 opt目录下 xff09 2 将安装包解压到 app目录下 mkdir app cd opt ulimit f 1000000 t
  • numpy 多级排序 :lexsort 函数详解

    目录 1 lexsort 排的是个啥 2 举个例子 1 lexsort 排的是个啥 lexsort 函数的定义如下 xff1a def lexsort keys axis 61 None lexsort是一种多级排序方法 作用为对给定的 k
  • 5.1 Spark的安装与使用

    第一关 Scala语言开发环境的部署 1 下载解压 在Scala官网根据平台选择下载Scala的安装包scala 2 17 7 tgz 解压到 app目录下 xff1a mkdir app 创建 app 目录 cd opt tar zxvf
  • 5.7 Spark简单算子案例(Python版)

    第一关 WordCount 词频统计 编程要求 对文本文件内的每个单词都统计出其出现的次数 按照每个单词出现次数的数量 xff0c 降序排序 文本文件内容如下 xff08 单词与单词之间以空格进行分割 xff09 xff1a hello j
  • day01 开始

    一 介绍 夏培肃 造计算机第一代 李国杰 黄令仪 胡伟武 刘阳 底层 应用层 APP 金庸 xff1a 内练一口气 外练筋骨皮 内功 外功 操作系统 BIOS 3w 操作系统原理 计算机原理 STM32 100 30 70 上午 xff1a
  • day02 LED

    一 回顾 1 C int char short typedef 起别名 指针 函数 void fun T int x int y 结构体 2 嵌入式 以应用为中心 物联网的框架 xff1a 感知层 网络层 平台层 应用层 3 搭建开发环境
  • day03 timer

    一 回忆 计算机体系结构 总线的概念 数据总线 地址总线 控制总线 如 xff1a 0x12345678上放0x100 AHB AHB1 AHB2 APB1 APB2 编译原理 hello c 预处理 xff08 预处理器 xff09 he
  • ubuntu安装CMake

    CMake是什么呢 xff1f 根据百度百科的解释 xff0c CMake是一个跨平台的安装 xff08 编译 xff09 工具 xff0c 可以用简单的语句来描述所有平台的安装 编译过程 xff0c 能够输出各种各样的makefile或者

随机推荐

  • Ubuntu安装ifconfig工具

    安装命令 xff1a sudo apt install net tools
  • 通关必读—linux面试题(带答案)

    答案linux考试题 1 在登录Linux时 xff0c 一个具有唯一进程ID号的shell将被调用 xff0c 这个ID是什么 b A NID B PID C UID C CID 答 xff1a w命令查看用户tty终端信息 ps ef
  • shell判断整数变量的奇偶性

    为了简化问题和突出重点 xff0c 这里我们假设脚本的输入参数一定为合法的整数类型 xff0c 因而在脚本内部将不再进行参数的合法性判断 span class token punctuation span root 64 xieqichao
  • 《云计算全栈》-python篇:编写石头剪刀布小游戏、附带升级脚本-循环版石头剪刀布小游戏

    3 案例3 xff1a 编写石头剪刀布小游戏 3 1 问题 编写game py脚本 xff0c 实现以下目标 xff1a 计算机随机出拳 玩家自己决定如何出拳 代码尽量简化 123 3 2 方案 引用random模块生成0 2的随机数 xf
  • pytorch 层标准化 LayerNorm 的用法

    目录 1 为什么要标准化 xff08 理解的直接跳过到这部分 xff09 2 LayerNorm 解释 3 举例 只对最后 1 个维度进行标准化 4 举例 对最后 D 个维度进行标准化 1 为什么要标准化 xff08 理解的直接跳过到这部分
  • Python全套语法

    目录 学Python你应该get到的三句话 xff01 跟紧潮流不是随波逐流 xff01 投靠大佬不是投机取巧 xff01 赚取利益不是急功近利 xff01 Python全套语法重磅来袭 xff01 初识python之概念认知篇 初识pyt
  • 初识python之元组列表篇

    我们知道python的数据类型有 字符串 xff0c 数字 xff0c 列表 xff0c 元组 xff0c 字典 xff0c 函数等 xff0c 这些都是我们在进行实际开发中 xff0c 必备的一些基础性语法 xff0c 本期文章 xff0
  • Python如何把字典写入到CSV文件

    在实际数据分析过程中 xff0c 我们分析用Python来处理数据 xff08 海量的数据 xff09 xff0c 我们都是把这个数据转换为Python的对象的 xff0c 比如最为常见的字典 比如现在有几十万份数据 xff08 当然一般这
  • C 判断

    C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件 xff0c 以及条件为真时要执行的语句 xff08 必需的 xff09 和条件为假时要执行的语句 xff08 可选的 xff09 C 语言把任何非零和非空的值假定为 true x
  • C 数组

    lt div class 61 34 article intro 34 id 61 34 content 34 gt C 数组 C 语言支持数组数据结构 xff0c 它可以存储一个固定大小的相同类型元素的顺序集合 数组是用来存储一系列数据
  • 为什么访问亚马逊的网站卡顿?

    lt h4 class 61 34 sectiontitle 34 gt 为什么访问亚马逊的网站卡顿 xff1f lt h4 gt 购买了 华北 北京四 的服务器 xff0c 在亚马逊开办了跨境电商网站 xff0c 使用过一段时间后 xff
  • 一文了解公有云、私有云、混合云、边缘云、专有云、分布式云

    1 公有云 公有云是为大众建的 xff0c 所有入驻用户都称租户 xff0c 不仅同时有很多租户 xff0c 而且一个租户离开 xff0c 其资源可以马上释放给下一个租户 xff0c 一如饭店里一桌顾客走了马上迎来下一桌顾客 公有云是最彻底
  • 区块链基本概念

    传统商业网络 在当前传统商业网络中 xff0c 作为整个商业网络的参与方 xff0c 各商业机构及政府 金融机构等各方独立 系统不通 xff0c 各自维护自己的数据 当发生交易时 xff0c 交易双方修改各自账本并本地维护 xff0c 形成
  • ChatGPT——OpenAI推出的人工智能聊天机器人

    ChatGPT OpenAI推出的人工智能聊天机器人 目录 隐藏 1 什么是ChatGPT 2 ChatGPT的应用领域 3 3 ChatGPT的原理 4 ChatGPT的发展历程 5 ChatGPT爆火的原因 6 ChatGPT带来的变革
  • HBase

    架构设计 核心概念 xff1a Client xff1a 发起读写请求的角色 xff0c 面向hbase client 编程 首先hbase查询Meta表 xff0c 找到读或写的数据的region区域位置信息 然后向region对应的HR
  • python 数组的排列与组合:combinations 与 permutations

    combinations 与 permutations 函数在python 的 itertools 库中 xff0c 因此在使用前需要 import itertools combinations 函数的作用就是罗列出所有数组中 n 个元素的
  • 在STM32下完成一个基于FreeRTOS的多任务程序

    在STM32下完成一个基于FreeRTOS的多任务程序 一 FreeRTOS简述二 MDK下移植FreeRTOS三 总结 一 FreeRTOS简述 FreeRTOS是一个热门的嵌入式设备用即时操作系统核心 已被经成功移植到35种不同的微控制
  • 【K8S】Kubernetes集群搭建流程详解

    文章目录 一 购买云服务器二 搭建Docker环境三 根据K8S官网搭建 基础环境 四 安装K8S三剑客 xff1a kubelet kubeadm kubectl五 安装K8S节点需要使用的镜像六 使用kubeadm初始化Master节点
  • springBoot maven打包[分层打包]

    打jar包 xff0c 很大 xff0c 发服务器也慢 get到一种打包方式 直接挨着cv直接就能用 一 src目录下创建assembly文件夹下assembly xml lt assembly xmlns 61 34 http maven
  • 链表-倒序排列鏈表

    剑指 Offer 06 从尾到头打印链表 38 输入一个链表的头节点 xff0c 从尾到头反过来返回每个节点的值 xff08 用数组返回 xff09 示例 1 xff1a 输入 xff1a head 61 1 3 2 输出 xff1a 2