前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode:从头到尾打印链表

leetcode:从头到尾打印链表

原创
作者头像
用户9955628
发布2022-08-12 22:53:27
2160
发布2022-08-12 22:53:27
举报
文章被收录于专栏:python3基础算法

题目:

描述

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

如输入{1,2,3}的链表如下图:

返回一个数组为[3,2,1]

0 <= 链表长度 <= 10000

示例1

输入:

代码语言:javascript
复制
{1,2,3}

复制

返回值:

代码语言:javascript
复制
[3,2,1]

复制

示例2

输入:

代码语言:javascript
复制
{67,0,24,58}

复制

返回值:

代码语言:javascript
复制
[58,24,0,67]

思路一:

  1. 遍历链表的每个节点,存储在list中
  2. 反转list
代码语言:javascript
复制
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# @param listNode ListNode类 
# @return int整型一维数组
#
class Solution:
    def printListFromTailToHead(self , listNode: ListNode) -> List[int]:
        # write code here
        res = []
        while(listNode):
            res.append(listNode.val)
            listNode = listNode.next
        return res[::-1]

结果:

知识点:

在编写代码中,我们临时储存的数据是在内存当中,内存就像一块块并列排序的小方盒,每个小方盒都有自己地址,我们储存的数据就在这样一个个小方盒当中。

数组在内存好像抽屉,从上到下按顺序摆放,不能间断
数组在内存好像抽屉,从上到下按顺序摆放,不能间断

数组在内存中是按顺序,内存地址来存储的,就好似上图的抽屉,从上到下,按顺序存放物品,中间不能间断,你在第一个抽屉放一个数据,又在第三个抽屉放一个数据,中间空一个抽屉,这是不允许的。这一特征也就意味着数据在内存中是相连的,紧紧不分开的,小的空闲内存空间可能会装不下较多的数据,造成了内存空间浪费。

链表与在内存中排列整齐的数组不同,它们像一堆散兵游勇,散布于内存中,只要哪里有空隙就往哪里钻,链表高效地运用了内存空间。虽然它们看起来杂乱无章,但其实它们井然有序,暗号让它们紧紧相连。数据与数据之间有一条“暗号”的链子相连接,哪个数据在首位,哪个数据在第二位……在末尾都非常清楚。

这种“暗号”其实就是内存地址,一个节点包含了两个方面的内容,数据和“暗号”,这个“暗号”其实就是下一个节点的引用信息。

链表的第一个和最后一个节点最重要和最特殊,最后一个节点则意味着后面没有数据了,所以它指向None,第一个节点的内存地址需要一个地方来保存,所以设立一个head属性对第一个节点应用。

listNode中的val就是数据,next就是下一个节点的引用信息。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 描述
  • 示例1
  • 示例2
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档