牛客-剑指offer系列题解:从尾到头打印链表(python语言)

记录刷题的过程。牛客和力扣中都有相关题目,这里以牛客的题目描述为主。该系列默认采用python语言。

1、问题描述:
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

2、所用数据结构:数组

3、题解:
方法一:用数组返回相反序列的链表,使用insert方法

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    # 返回从尾部到头部的列表值序列,例如[1,2,3]
    def printListFromTailToHead(self, listNode):
        # write code here
        # pointer 指针 temporary临时数据;node 结点
        #给一个 arraylist 空列表,然后向这个里面压入数据,来输出 这个链表值 的一个从尾到头 的顺序值。
        ret = []
        #把 listNode 这个链表 传给一个 变量
        temp = listNode
        #当这个变量 存在时 有值时:
        while temp:
            #使用 insert 的原因是:insert 可以在指定位置之前插入元素,列表.insert(索引,值)
            #在空列表中起始位置,插入 temp的第一个值,然后 给temp 赋值 为 temp.next (下一个值) 
            ret.insert(0, temp.val)
            #更改 指针,使指针指向下一个 元素
            temp = temp.next
      #最后返回我们 这个 插入值的 列表 
        return ret 

方法二:使用append

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    # 返回从尾部到头部的列表值序列,例如[1,2,3]
    def printListFromTailToHead(self, listNode):
        # write code here
        # pointer 指针 temporary临时数据;node 结点
        #给一个 arraylist 空列表,然后向这个里面压入数据,来输出 这个链表值 的一个从尾到头 的顺序值。
        ret = []        
        temp = listNode       
        while temp:            
        	ret.append(temp.val)            
        	temp = temp.next        
        return ret[::-1]

复杂度分析:时间和空间复杂度都是O(n)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值