输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
根据栈的特点,遍历链表,将节点的值依次入栈;再将栈中元素,依次出栈
先走至链表末端,回溯时依次将节点值加入列表;链表末端时,返回空列表
func reversePrint(head *ListNode) []int {
stack := make([]int, 0)
// 入栈
for head != nil {
stack = append(stack, head.Val)
head = head.Next
}
ret := make([]int, len(stack))
// 出栈
for i := 0; i < len(stack); i++ {
ret[i] = stack[len(stack)-i-1]
}
return ret
}
func reversePrint(head *ListNode) []int {
// 递归结束
if head == nil {
return []int{}
}
// 回溯
return append(reversePrint(head.Next), head.Val)
}
KGo笔记
全部评论