牛客-剑指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)

你可能感兴趣的:(牛客-剑指offer系列题解)