声明:此文章用来记录我对于题目的解法及大佬们优秀的解答,部分代码是复制的别人的,所以此文章只是为了方便我日后重新看优秀的解答,如涉及代码版权请联系我删除。
1. 题目
题目:剑指 Offer 06. 从尾到头打印链表
问题:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例:
输入:head = [1,3,2]
输出:[2,3,1]
2. 解答
(1)我的解法(时间复杂度:O(n),空间复杂度:O(n))
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
val = []
p = head
while head != None:
val.append(head.val)
head = head.next
return val[::-1]
我的解法是使用了辅助栈
(2) 别人的解法
1)递归法。时间复杂度O(n),空间复杂度O(n)
# 递归法
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
return self.reversePrint(head.next) + [head.val] if head else []