题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2] 输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
解题方案: 统计节点数量,倒序插入元素
/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/func reversePrint(head *ListNode) []int {p := head //工作指针n := 0//统计节点数目for p != nil {p = p.Next}// 开辟切片空间arr := make([]int, n)//工作指针复位p = head//第二次遍历链表,存入数组for i := n - 1; i >= 0; i-- {arr[i] = p.Valp = p.Next}return arr}
解决方案: 递归
:::tips 递归的方法简单,但是开销大,不推荐在开发过程中使用 :::
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reversePrint(head *ListNode) []int {
if head == nil {
return []int{}
}
return append(reversePrint(head.Next),head.Val)
}
