0
点赞
收藏
分享

微信扫一扫

Leetcode--从尾到头打印链表

RockYoungTalk 2022-02-10 阅读 62

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 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
}
举报

相关推荐

0 条评论