输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2] 输出:[2,3,1]
思路一(用到栈,但没有思路二省时间):
从尾到头打印,基本可以想到我们的栈,先进后出。将链表放入栈,依次取出就是题目要求
代码:
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
stack = []
while(head):
stack.append(head.val)
head = head.next
return stack[::-1]
思路二(没有用到栈,节省时间,代码稍长):
首先拿到链表的长度,然后开辟一个空的列表,从列表的最后一个元素往前放链表的值,也能达到反向取链表数据的效果
代码:
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
length = 0
nhead=head#注意这里要有一个新的指针指向链表的头部,head循环之后就指向null了
#得到链表的长度
while(head):
length+=1#获得链表的长度
head = head.next
list = [None]*length
while(nhead):
list[length-1] = nhead.val#倒着放入值
length-=1
nhead = nhead.next
return list