题目描述
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
方法一
解题思路
- 递归,将链表节点的值依次返回
代码实现
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reversePrint(head *ListNode) []int {
if head == nil {
return make([]int, 0)
}
return append(reversePrint(head.Next), head.Val)
}
方法二
解题思路
- 反转链表
代码实现
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reversePrint(head *ListNode) []int {
var tmp *ListNode
for head != nil {
next := head.Next
head.Next = tmp
tmp = head
head = next
}
res := make([]int, 0)
for tmp != nil {
res = append(res, tmp.Val)
tmp = tmp.Next
}
return res
}
方法三
解题思路
- 反转数组
代码实现
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reversePrint(head *ListNode) []int {
res := make([]int, 0)
for head != nil {
res = append(res, head.Val)
head = head.Next
}
return reverseArr(res)
}
func reverseArr(arr []int) []int {
for i := 0; i < len(arr) / 2; i++ {
arr[i], arr[len(arr) - 1 - i] = arr[len(arr) - 1 - i], arr[i]
}
return arr
}
版权声明:本文为yc______原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。