剑指 Offer 06. 从尾到头打印链表
难度简单42
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
使用递归方法最简单 一句代码搞定
# 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]:
return self.reversePrint(head.next) + [head.val] if head else []
但是这样效率并不是很高
我们使用迭代的方法
# 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]:
li = []
curr = head
while curr is not None:
li.append(curr.val)
curr = curr.next
li.reverse()
return li
我们这里并没有一直在列表的头进行插入, 由于列表的内部结构特点, 那样的会一直在移动后面的所有数据, 最好的时候是这样的