剑指 Offer 06. 从尾到头打印链表
题目描述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
剑指 Offer 06. 从尾到头打印链表。1
解题思路:
1. 原链表进栈
def reversePrint(self, head: ListNode) -> List[int]:
tmp = []
while head:
tmp.append(head.val)
head = head.next
return tmp[::-1]
输出到时候,需要反转列表。
时间复杂度O(N); 空间复杂度:O(N)
2. 使用递归
用递归然后回溯,从末尾开始挨个取元素。递归结束条件,head == None。
def reversePrint(self, head: ListNode) -> List[int]:
if not head:
return []
else:
return self.reversePrint(head.next)+ [head.val]
时间复杂度:O(N); 空间复杂度:O(N)