【leetcode】【Golang】【剑指offer】【面试题06 — 从尾到头打印链表】

一、题目描述

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

示例 1:
输入:head = [1,3,2]
输出:[2,3,1]

限制:
0 <= 链表长度 <= 10000

二、题目分析

个人思路:
法一:遍历链表将值暂存在数组中,由于顺序原因需要进行反转。
法二:遍历链表将值暂存在数组中,存储时就将顺序进行反序存储。

三、golang代码

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
//法一
func reversePrint(head *ListNode) []int {
	var result []int
	//遍历存储val至数组
	for head != nil {
		result = append(result, head.Val)
		head = head.Next
	}
	//首尾交换位置,相当于反转后输出
	for i := 0; i < len(result)/2; i++ {
		temp := result[i]
		result[i] = result[len(result)-1-i]
		result[len(result)-1-i] = temp
	}
	return result
}
 
//法二
func reversePrint(head *ListNode) []int {
	var result []int
	//存储同时将顺序进行调整
	for head != nil {
		result = append([]int{head.Val}, result...)
		head = head.Next
	}
	return result
}}

四、运行结果

法一:性能良好
执行用时 :0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗 :3.1 MB, 在所有 Go 提交中击败了100.00%的用户
法二:性能不佳
执行用时 :56 ms, 在所有 Go 提交中击败了8.44%的用户
内存消耗 :9.8 MB, 在所有 Go 提交中击败了100.00%的用户

题目链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/
想法不够优化,欢迎大家留言交流~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值