LeetCode面试题06.从头到尾打印一个链表[剑指Offer][Easy][Python][链表]题buttoninput一个链表的头节点,从尾到头依次返回每个节点的值(以数组形式返回)。例1:输入:head=[1,3,2]输出:[2,3,1]限制:0<=链表长度<=10000思路解1逆向函数时间复杂度:O(n),n为head链表的长度。空间复杂度:O(n),n是headlist的长度。Python3代码#单链表的定义。#classListNode:#def__init__(self,x):#self.val=x#self.next=Noneclass解决方案:defreversePrint(self,head:ListNode)->List[int]:#解法一:反向res=[]whilehead:res.append(head.val)head=head.nextres.reverse()returnres解法二栈时间复杂度:O(n),n为head链表长度。空间复杂度:O(n),n是headlist的长度。Python3代码#单链表的定义。#classListNode:#def__init__(self,x):#self.val=x#self.next=Noneclass解决方案:defreversePrint(self,head:ListNode)->List[int]:#方案二:栈栈=[]whilehead:#pushstack.append(head.val)head=head.nextres=[]whilestack:#popres.append(stack.pop())returnres解法三递归Python3代码#单向链表的定义。#classListNode:#def__init__(self,x):#self.val=x#self.next=NoneclassList[int]:#方案三:递归returnself.reversePrint(head.next)+[head.val]ifheadelse[]代码地址GitHub链接
