LeetCode | 面试题06. 从尾到头打印链表剑指OfferPython
Posted wonz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode | 面试题06. 从尾到头打印链表剑指OfferPython相关的知识,希望对你有一定的参考价值。
LeetCode 面试题06. 从尾到头打印链表【剑指Offer】【Easy】【Python】【链表】
问题
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
思路
解法一
reverse函数
时间复杂度: O(n),n为 head 链表长度。
空间复杂度: O(n),n为 head 链表长度。
Python3代码
# 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]:
# solution one: reverse
res = []
while head:
res.append(head.val)
head = head.next
res.reverse()
return res
解法二
栈
时间复杂度: O(n),n为 head 链表长度。
空间复杂度: O(n),n为 head 链表长度。
Python3代码
# 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]:
# solution two: 栈
stack = []
while head: # push
stack.append(head.val)
head = head.next
res = []
while stack: # pop
res.append(stack.pop())
return res
解法三
递归
Python3代码
# 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]:
# solution three: 递归
return self.reversePrint(head.next) + [head.val] if head else []
代码地址
以上是关于LeetCode | 面试题06. 从尾到头打印链表剑指OfferPython的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 剑指offer 面试题06. 从尾到头打印链表