题目
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
解
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
from collections import deque
class Solution:
# 返回从尾部到头部的列表值序列,例如[1,2,3]
def printListFromTailToHead(self, listNode):
# write code here
stack = deque() # 使用双向链表添加更快
node = listNode
while node != None:
stack.appendleft(node.val)
node = node.next
return list(stack) # 题目要求返回list 或许直接用list效率更高? list扩大内存采用连续分配还是复制?
要点
题目给出的是单向链表,只能从头到尾,要从尾到头进行操作,很显然是“先进后出”,自然想到了使用栈进行处理,本题也可使用递归,但要当心链表过长导致堆栈溢出