題目
輸入一個鏈表,按鏈表從尾到頭的順序返回一個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擴大內存採用連續分配還是複製?
要點
題目給出的是單向鏈表,只能從頭到尾,要從尾到頭進行操作,很顯然是“先進後出”,自然想到了使用棧進行處理,本題也可使用遞歸,但要當心鏈表過長導致堆棧溢出