刷题__4_从尾到头打印链表

从尾到头打印链表(Java) 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。链表的结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext; }第一思路:我的第一思路是从头到尾输出类比数组那样,于是乎想把链表中的链表结点的指针反转过来,改变链表的方向,然后实现从头到尾输出(结果为从尾到头输出),可是发现修改链表的指针,反转链表的结构比较麻烦。于是乎放弃。(改... 阅读详情

1.描述:
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:

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

限制:
0 <= 链表长度 <= 10000

2.想法:
2.1 此题比较简单,因为不知道链表的大小,所以先顺序遍历链表,将值存入序列中,然后再将序列中的值倒过来。

2.2 也可以先遍历链表,记录结点个数,然后再给数组从后往前赋值,但是这种方法在python里面没有必要。

2.3 然后就是堆栈,先将元素入栈,然后pop出来。

2.4 也可以用递归,先输出最里层,然后一层层向外,达到了反向的效果。(这也是我没想到的)

3.答题:
3.1 遍历后反转

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def reversePrint(self, head):
        """
        :type head: ListNode
        :rtype: List[int]
        """
        a=[]
        while head != None:
            a.append(head.val)
            head = head.next
        a.reverse()
        return a

逆序输出也可以用切片:a[::-1]

3.2 获取个数后赋值

# Definition for singly-linked list.
# class ListNode(object):
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def reversePrint(self, head):
        """
        :type head: ListNode
        :rtype: List[int]
        """
        mark = head
        index = 0
        while mark != None:
            index += 1
            mark = mark.next
        a=index*[0]
        for i in range(index):
            a[index-i-1] = head.val
            head = head.next
        return a

不推荐,因为简单问题复杂化了,不过也是一种硬解的思路。

3.3 栈

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def reversePrint(self, head):
        """
        :type head: ListNode
        :rtype: List[int]
        """
        a=[]
        b=[]
        while head != None:
            a.append(head.val)
            head = head.next
        while len(a):
            b.append(a.pop())
        return b

3.4 递归

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def reversePrint(self, head):
        """
        :type head: ListNode
        :rtype: List[int]
        """
        if head != None:
            return []
        return self.reversePrint(head.next) + [head.val]

递归嘛,大家都知道,耗费时间肯定比较多,但是思路很好。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof

C语言之从尾到头打印链表 从尾到头打印链表: 看完这题以后,很多人的第一反应就是从头到尾输出比较简单,于是我们很自然地想到把链表中链接结点的指针反转过来,改变链表的方向,就可以从头到尾输出了。但是该方法会改变原来链表的结构。那如果我们不该表链表的结构又怎样打印呢。 #include #include typedef struct _list { struct _list *next; int data; }L 阅读详情

相关推荐

傅里叶光学(1)

傅里叶光学,可以看作是通信理论中傅里叶变换等一系列数学思想以及系统理论与光学(主要是衍射光学)相结合的产物关于傅里叶光学的应用领域,本节介绍了成像,当然事实上不可能仅限于成像,经典的还如激光散斑的一些应用,干涉计量,还有傅里叶变换光谱学等等。最后总结一下,傅里叶光学我认为可以看做一个工具,对于任意的系统,它能给出一些数学思想与物理原理进行解释和分析,找出系统的扰动和响应的关系,或者说根据扰动和响应,来研究或者设计一个系统。

m0_53607446的博客 1670

学弟学妹们,别瞎学算法了,跟着师兄来看懂这道链表题!

一、题目描述 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 二、题目解析 链表都是从头读到尾依次访问每个节点,题目要求我们 从尾到头 打印链表,这种逆序的操作很显然可以考虑使用 具有 先入后出 特点的数据结构,那就是 栈。 具体操作如下: 入栈: 遍历链表,将各节点值 push 入栈。 出栈: 将各个节点值 pop 出栈,存储于数组并返回。 三、动

程序员吴师兄的博客 2321

Jetson AGX Orin 部署 JetPack:从依赖缺失到系统升级的完整排障指南

本文详细介绍了在Jetson AGX Orin开发板上部署JetPack SDK的完整排障指南,包括解决依赖缺失、系统升级和常见错误处理。通过确认硬件版本、配置正确的软件源、执行系统升级和安装核心组件等步骤,帮助开发者顺利完成JetPack的安装与配置,确保AI开发环境的稳定运行。

weixin_29172963的博客 159

[每日一题][剑指offer]从尾到头打印链表。输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)

描述: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 来源:力扣(LeetCode) 代码: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(i

weixin_45317494的博客 1178

OpenMV模块视觉测距(避障)+颜色识别+TFT-LCD显示(实现原理与代码分析)

上图所示代码实际运行的帧率比较低,主要原因有以下两个:1.硬件问题,博主使用的版本比较低,可以尝试使用高版本OpenMV2.图像滤波问题。之前加入图像滤波是想提高色块识别的准确性,但是相应的运算速度也会下降。

ediykk的博客 1万+

量化投资进阶:Fama-French三因子模型实战解析与Python实现

本文深入解析了Fama-French三因子模型,并提供了完整的Python实战指南。文章阐述了该模型如何通过引入市值因子(SMB)和价值因子(HML),对传统CAPM模型进行重要扩展,以更精准地解释股票收益来源。详细演示了使用Python获取数据、执行回归分析并解读结果(包括关键的阿尔法α)的全过程,并探讨了该模型在量化策略构建、风格诊断和业绩归因中的核心应用。

yog99的博客 1126

LC 剑指 Offer 35. 复杂链表的复制

LC 剑指 Offer 35 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例 1: 输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 输出:[[7,null],[13,0],[11,4],[10,2],[1,0]] 示例 2: 输入:head = [[1,1],[2,1]] 输出:[[1,1],[2,1]]

qq_29760429的博客 509

低功耗蓝牙技术 > GAP和GATT介绍

GAP和GATT作为蓝牙协议栈中的关键协议,为BLE设备之间的通信提供了标准和框架。GAP主要负责设备的连接、广播和角色定义,而GATT则定义了BLE设备之间的具体通信方式,通过Services和Characteristics实现数据的传输和交换。在蓝牙技术的发展中,GAP和GATT两个协议扮演着关键的角色,为BLE(低功耗蓝牙)设备之间的通信提供了规范和框架。GATT连接是建立在GAP协议之上的,是一种独占连接,一个BLE外设同时只能连接一个中心设备。连接建立后,通信是双向的,不同于GAP的单向通信。

DL_62532的专栏 4030

力扣刷题笔记丨算法数据结构--链表--从尾到头打印链表

1 题目分析 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 链表结构 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ ...

juehuan1999的博客 468

mapbox进阶,dem数据转为等高面,加载转换后的等高面到地图

本文详细介绍如何基于mapbox-gl v3.*.* 版本,使用dem数据转为等高面,加载转换后的等高面到地图,亲测可用。希望能帮助到您。一起学习,加油!加油!

我哎GIS博客 407

Eplan设计师必会—伺服安全回路的设计方法

本文介绍了在EPLAN中设计伺服STO安全回路的方法。首先需查阅伺服驱动器说明书确定STO接线端子,重点关注双通道配置。设计步骤包括:使用黑盒子功能绘制驱动器外形,正确标注STO接线点,并连接安全继电器或PLC的安全输出。关键注意事项有:必须采用双通道独立布线,确保同步动作,遵循故障安全原则,使用常闭触点串联回路。文中以西门子V90和汇川伺服为例说明具体接线要求,并附有项目实例参考。

Qinmingyue13的博客 436

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

第 2 天链表(简单) 剑指 Offer 06. 从尾到头打印链表 难度简单 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 题解: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) {

qq_46037465的博客 978

安路TangDynasty和FD和JTAG驱动器安装

安路FPGA产品矩阵包含SALPHOENIX高性能、SALEAGLE高性价比和SALELF低功耗三大系列,广泛应用于网络通信、消费电子等领域。配套的TangDynasty(TD)集成开发环境支持标准设计输入,提供完整优化流程与调试工具。简要介绍了TD 6.2.1版本的安装步骤。

wangjie36的博客 1034

【leetcode刷题笔记】4.从尾到头打印链表(简单)

题目如下: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 第一次尝试: 思路:建立一个新的数组,每读取一个元素就向数组第一位添加一个元素。 注意:记得让指针移动。 代码如下: /** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.ne

zyc06123的博客 407

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

力扣刷题笔记4——从尾到头打印链表以及vector.push_back的学习

从尾到头打印链表;vector.push back的学习

weixin_45034895的博客 169

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【题6 从尾到头打印链表】Java实现

【题6 从尾到头打印链表】 【题目】 输入一个链表的头节点,从头到尾反过来打印出每个结点的值。 先问: 是否允许修改输入的数据? 解决方案一:栈 首先遍历链表的节点后打印,典型的“后进先出”,可以使用栈来实现这种顺序。 遍历时候,每个结点放入栈中。 遍历完整链表后,从栈顶开始逐个输出结点的值 解决方案二:递归 栈的本质就是递归,直接使用递归的方式,打印一个节点的时候先打印它后面的节点,再打印该...

weixin_39795049的博客 1093

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

单链表从尾到头打印的四种方法

一、单链表从尾到头打印的四种方法。 1、正常从尾到头打印。 用一个尾指针指到最后,尾指针每次前移移位,遇到尾指针则打印。 void EndToFirstPrintNode(SListNode*ps) //正常从尾到头打印 { SListNode *cur=ps; SListNode *tail=NULL; while (ps != tail) { cur=ps; while (tail != cur->_next) ...

weixin_58368590的博客 2019

从尾到头打印链表——js

替换空格 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路: (1)正则 (2)split()方法 代码 //split方法 function replaceSpace(str) { return str.split(" ").join("%20"); } //...

qq_40608516的博客 813

4种方法详解:剑指Offer 06. 从尾到头打印链表

原题LeetCode链接:剑指Offer 06. 从尾到头打印链表 题目:剑指Offer 06. 从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例1: 输入:head = [1,3,2] 输出:[2,3,1] 0 <= 链表长度 <= 10000 思路一:reverse()方法 ​ 遍历链表,将遍历到的元素依次插入到vector中,然后调用reverse方法反转即可。时间复杂度:O(n),空间复杂度:O(1)。C++代码如下: class Solu

点滴初学者的博客 5444

从尾到头打印链表

文章目录从尾到头打印链表题目描述示例解题思路代码 从尾到头打印链表 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 示例 示例 1: 输入: 1->2->3->4 输出: [4,3,2,1] 解题 思路 先进后出首先想到的是栈,那么我们就可以使用虚拟机栈来做这件事,也就是递归来解决。 代码 public class PrintListFromTailTo...

程序员大航子 1199

面试:从尾到头打印链表

题目:从尾到头打印链表 要求:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例: ` 输入:head = [1,3,2] 输出:[2,3,1] ` 限制: 0 ...

weixin_42515390的博客 831

链表的从尾到头打印(四种方法)

一、单链表从尾到头打印的四种方法。 1、正常从尾到头打印。 用一个尾指针指到最后,尾指针每次前移移位,遇到尾指针则打印。void EndToFirstPrintNode(SListNode*ps) //正常从尾到头打印 { SListNode *cur=ps; SListNode *tail=NULL; while (ps != tail) { c

龙跃十二 8248

【C/C++练习题】从尾到头打印链表

《剑指Offer》面试题6

本末实验室 1247

Python 从尾到头打印链表

用Python实现链表的顺序打印: # -*- coding:utf-8 -*- class ListNode: def __init__(self, x): self.val = x self.next = None def printChain(node): while node: print(node.val) ...

weixin_44208324的博客 360
上一篇: 二、芦哲峰《桃花粉,梨花白》
下一篇: Python中is运算符和==运算符的区别
please_say_d
博客等级 码龄7年 13粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值