描述
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
如输入{1,2,3}的链表如下图:
返回一个数组为[3,2,1]
(0 <= 链表长度 <= 1000)
初步想法:等于说把数字一个一个的放进去,然后从尾巴一个一个拿出来,那就是数据结构中的栈了,先进后出。
官方给的题解:
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
# 方法一 使用栈
if not listNode:
return []
temp = []
result = []
while listNode:
temp.append(listNode.val) # 进栈
listNode = listNode.next
while temp:
result.append(temp.pop()) # 出栈
return result
# 方法二 使用递归
result = []
def solutions(Node):
if Node:
solutions(Node.next)
result.append(Node.val)
solutions(listNode)
return result
# 方法三 使用从头到尾遍历,逆序输出
result = []
while listNode:
result.append(listNode.val)
listNode = listNode.next
return result[::-1]
其中方法一关于val()函数:将一组字符型数据的数字部分转换为相应的数值型数据。