输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
[1] 利用栈的后进先出
python中没有stack这个结构,但是可以使用list作为stack使用: listA.append() 和 listA.pop()
class Solution: # (⊙﹏⊙)这个超出限制内存
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
l = []
answer = []
while(listNode):
l.append(listNode.val)
listNode = listNode.next
while(l):
answer.append(l.pop)
return answer
**[2]**递归求解
# -*- 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
if listNode is None:
return []
return self.printListFromTailToHead(listNode.next) + [listNode.val]
[3] 利用python list的insert(index, obj) 或 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
l = []
head = listNode
while(head):
l.insert(0, head.val) # 不停的往0号位置插入,已存在的值往后移
head = head.next
return l
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
l = []
head = listNode
while(head):
l.append(head.val)
head = head.next
return l[::-1]
**[4]**使用python内置函数
from collections import deque
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
temp = deque()
head = listNode
while(head):
temp.appendleft(head.val)
head = head.next
return temp