输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
解题思路:
1、定义一个空列表,判断头是否为空,不为空则存入,为空则直接返回[]
2、然后将head后的第一个结点赋值给a,判断是否存在,存在则存入列表,并继续next
提交结果如下
代码:
# 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]:
ls=[]
if head:
ls.append(head.val)
else:
return []
a=head.next
while a:
ls.append(a.val)
a= a.next
ls=ls[::-1]
return ls
这样写更简单明了(自己果然是菜鸡):
ls=[]
while head :
ls.append(head.val)
head=head.next
return ls[::-1]
搬运大神方法:
一、使用递归:
因为是从尾到头输出,所以可以将对后面节点的递归放在头结点的前面
if not head:
return []
return self.reversePrint(head.next) +[head.val]
二、使用堆栈
使用列表的pop方法,将最后一个元素弹出,存入一个新的列表中,从而实现从尾到头的输出
ls=[]
while head:
ls.append(head.val)
head=head.next
lst=[]
while ls:
lst.append(ls.pop())
return lst