题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:0 <= 链表长度 <= 10000
方法一:辅助栈
因为单链表是单向的,所以链表的反向遍历是链表中经常遇到的问题。要想从尾到头的返回每个节点的值,我们可以借助栈的先入后出的性质,在顺序遍历链表的同时,将链表值进行入栈操作,遍历完成后,将栈中元素进行出栈,即可实现题目要求。
AC代码
时空复杂度
时间复杂度:一次遍历链表,一次出栈操作。O(N)
空间复杂度:另外开辟了一个辅助栈,O(N)
方法二:反转链表
在不借助外部空间的情况下,我们可以将整个链表进行翻转,最后对链表进行一次遍历即可完成要求。
AC代码
时空复杂度
时间复杂度:第一次遍历链表进行翻转,第二次遍历翻转后的链表,O(N)
空间复杂度:没有开辟要求的数组以外的空间,O(1)