记录刷题的过程。牛客和力扣中都有相关题目,这里以牛客的题目描述为主。该系列默认采用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)