输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2] 输出:[2,3,1]
递归法
时间100%
空间33%?
func reversePrint(head *ListNode) ([]int) {
if head == nil {return nil}
return append(reversePrint(head.Next), head.Val)
}
辅助栈法
时间100%
空间88%
func reversePrint(head *ListNode) ([]int) {
if head == nil {
return nil
}
//把链表每个节点的值存入切片
stack := []int{head.Val}
for head.Next != nil {
head = head.Next
stack = append(stack, head.Val)
}
//然后头和尾交换位置
l := len(stack)-1
t := len(stack)/2
for i:=0;i<t;i++{
stack[i],stack[l-i] = stack[l-i],stack[i]
}
return stack
}