剑指 Offer 06. 从尾到头打印链表(递归、逆置链表、头部动态插入)

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

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

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

解法一:递归(递归本来就是一种栈,所以算做一类)

func reversePrint(head *ListNode) []int {if head == nil {return []int{}}if head.Next == nil {return []int{head.Val}}return append(reversePrint(head.Next), head.Val)
}

在这里插入图片描述

解法二:逆置链表

func reversePrint(head *ListNode) []int {if head == nil {return []int{}}// 逆置链表fistNode, mindNode := head, head.NextfistNode.Next = nilfor {if mindNode == nil {break}endNode := mindNode.NextmindNode.Next = fistNodefistNode = mindNodemindNode = endNode}vals := make([]int,0)for {if fistNode == nil {return vals}vals = append(vals, fistNode.Val)fistNode = fistNode.Next}
}

在这里插入图片描述
解法三:头部动态插入(模拟切片动态扩容)

func reversePrint(head *ListNode) []int {if head == nil {return []int{}}vals := make([]int, 4)endIndex := len(vals)for {endIndex--if head == nil {break}vals[endIndex] = head.Valif endIndex == 0 {vals, endIndex = dilatation(vals)}head = head.Next}return vals[endIndex+1:]
}func dilatation(arr []int) ([]int, int) {lenArr := len(arr)restfulSize := lenArr + lenArr/2restful := make([]int, restfulSize)endIndex := len(restful)arrIndex := lenArr - 1for {if arrIndex < 0 {break}endIndex--restful[endIndex] = arr[arrIndex]arrIndex--}return restful, endIndex
}

在这里插入图片描述
总结:可以看出头部动态插入与逆置链表再执行速度相同的情况下占用的空间还是比递归少一些,虽然不是官方解法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

王家耀院士 | 新型智慧城市“大脑”就是时空大数据平台

来源&#xff1a;泰伯网摘要&#xff1a;新型智慧城市建设的任务包括五点&#xff0c;首先是大力实施“互联网城市”行动&#xff1b;二要加强体制机制创新和城市资源整合&#xff1b;三要推进工业化、信息化、城镇化、农业现代化融合创新&#xff1b;四要着力解决“城市病”&a…

网站架构之缓存应用(摘录)

网站缓存这个话题并不新颖&#xff0c;但是能否将它用好&#xff0c;可是一门学问&#xff0c;同一件工具在不同人的手中会做出不同的事情来。这里我来分享总结下我对于网站架构中缓存应用的一些看法和经验&#xff0c;大家有好的想法可以补充 第一&#xff1a;缓存的一些基…

C++校招常见面试题(2019年校招总结)

总结了语法、数据结构、常见排序算法、操作系统、网络五大块常见校招面试题。欢迎补充与修正。 ★★语法知识★★ 一、C与C的区别 面向对象与面向过程的区别 面向过程 面向过程编程是就分析出解决问题题的步骤&#xff0c;然后把这些步骤一步一步的实现&#xff0c;使用的时…

3分钟了解物联网三大技术的未来争夺战!

来源&#xff1a;传感器技术摘要&#xff1a;物联网通过通信技术将人与物、物与物进行连接&#xff0c;在智能家居、工业数据采集等区域网通信场景一般采用短距离通信技术&#xff0c;对于广范围、远距离的连接则需要远距离通信技术。物联网通过通信技术将人与物、物与物进行连…

❤ 想知道大厂面试都问什么吗,附最强面试技巧!!(大数据开发岗)❤

作者简介 蓝桥签约作者、大数据&Python领域优质创作者。维护多个大数据技术群&#xff0c;帮助大学生就业和初级程序员解决工作难题。 我的使命与愿景&#xff1a;持续稳定输出&#xff0c;赋能中国技术社区蓬勃发展&#xff01; 粉丝福利&#xff1a;免费下载海量【PPT…

机器怎样才能有意识

来源&#xff1a;应行仁科学网博客摘要&#xff1a;意识&#xff0c;没有一个客观的科学定义&#xff0c;难以观测认定&#xff0c;但它是每个人都能主观感受到的真实。意识&#xff0c;没有一个客观的科学定义&#xff0c;难以观测认定&#xff0c;但它是每个人都能主观感受到…

OD使用教程3(下) - 调试篇03|解密系列

OD使用教程3(下) - 调试篇03 让编程改变世界 Change the world by program 逻辑运算 [caption id"attachment_706" align"aligncenter" width"358"]逻辑运算[/caption] 关于test指令 test指令格式&#xff1a;test dest, src 这个指令和…

❤『面试知识集锦100篇』1.面试技巧篇丨HR的小心思,你真的懂吗?

作者&#xff1a;不吃西红柿 简介&#xff1a;CSDN博客专家、蓝桥签约作者、大数据&Python领域优质创作者。 目录 一、企业考察要点 技巧一&#xff1a;了解自己的专业技能与 JD 中的匹配点 技巧二、把控好企业「味道」 技巧三、精彩的自我介绍 技巧四、常见问题回答…

机器人行业发展方向预测报告

来源&#xff1a;招商证券摘要&#xff1a;随着中国人口红利消失&#xff0c;机器人不仅在制造业上正在替代工人&#xff0c;还将在军事、服务、娱乐等领域取代人类&#xff0c;“钢铁侠”已不仅仅存在于美国科幻电影中&#xff0c;而正走入我们的生活。本篇报告对机器人行业及…

在BingoCC上面解析域名实现智能路由

天朝的网络强大无人能及&#xff0c;世界上最大的Ping值不是从中国到美国而是从电信到联通。当你搭建了一个网站需要为南方北方的客户服务的话少不得你就要选择有中国特色的双线机房了。现在假如你已经把你的服务器已经部署在双线机房了&#xff0c;并且申请到了双线IP。为了让…

数据结构 - 队列(图解+源码)

队列 概念 队列是一种特殊的线性表&#xff0c;特殊之处在于它遵循先入先出&#xff08;FIFO&#xff09;原则&#xff0c;只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;进行插入操作&#xff0c;和栈一样…

学界 | 清华AMiner团队发布53页计算机图形学研究报告

来源&#xff1a;AI科技评论摘要&#xff1a;清华 AMiner 团队近日发布新一期研究报告——《计算机图形学研究报告》&#xff0c;报告全文共 53 页&#xff0c;从概念、技术、人才、会议、应用及相应趋势详细介绍了计算机图形学的相关内容。报告内容速览概述篇&#xff1a;计算…

爱犯错的智能体 – 视觉篇(五):火星人脸的阴影

来源&#xff1a;张军平科学网博客摘要&#xff1a;人类对外星文明的寻找和痴迷自古就有记载。所以&#xff0c;每每看到拍摄于外星球的照片&#xff0c;必然会情绪激动&#xff0c;试图从中获取存在外星人的蛛丝马迹。一、火星人脸人类对外星文明的寻找和痴迷自古就有记载。所…

链表简单实现(增删查改)

链表 关于链表的原理已经有一篇链表文章写的很详细了&#xff0c;这篇文章主要侧重于代码的实现&#xff0c;主要使用go实现。 单链表实现 package Listtype listNode struct {val intnext *listNode }func newNode(val int) *listNode {node : new(listNode)node.val val…

今天不发技术文,发点粉丝福利

一、资料 1、100套小编购买的简历模板&#xff08;部分截图&#xff09; 2、1000套精品PPT模板&#xff08;部分截图&#xff09; 3、大数据-学习资料&#xff08;1.3G 硬核PDF&#xff0c;官方指南&#xff09; 4、python学习全集 5、Java基础、高级和面试资料 6、大数据-行业…

剑指 Offer 35. 复杂链表的复制(哈希/衍生拆分图解)

题目描述 请实现 copyRandomList 函数&#xff0c;复制一个复杂链表。在复杂链表中&#xff0c;每个节点除了有一个 next 指针指向下一个节点&#xff0c;还有一个 random 指针指向链表中的任意节点或者 null。 题目分析 题中每个节点新增了 random 指针&#xff0c;指向链表…

自动驾驶技术发展的5个阶段和现状

来源&#xff1a;智车科技摘要&#xff1a;自动驾驶的级别从L1到L5&#xff08;SAE&#xff09;&#xff0c;清晰而直观&#xff0c;是大家讨论自动驾驶行业的一个基准。但是&#xff0c;它也很容易误导人。让人以为自动驾驶的技术会一级一级获得突破&#xff0c;最终迎来一辆L…

❤『知识集锦』一文搞懂mysql索引!!(建议收藏)

作者&#xff1a;不吃西红柿 简介&#xff1a;CSDN博客专家、蓝桥签约作者、大数据领域优质创作者。 以我的资历和文凭&#xff0c;将来这个城市的大街&#xff0c;都归我扫。 【系列课程介绍】 『面试知识集锦』系列课程包括以下20个系列&#xff0c;超过100篇文章。每篇文章…

AI芯片的过去、现在与未来

来源&#xff1a;华尔街见闻摘要&#xff1a;AI芯片似乎没能表现得比人类更智能&#xff0c;但它们的学习能力很强&#xff0c;未来可以变得更聪明。算法和芯片系统的设计都可以进步&#xff0c;这需要AI芯片具备更高级的记忆系统和连接机制&#xff0c;以及承载深度学习数据流…

链表(图文详解)

链表的概念 链表是一种物理存储结构上非连续&#xff0c;非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。   链表的结构是多式多样的&#xff0c;当时通常用的也就是两种&#xff1a;   无头单向非循环列表&#xff1a;结构简单&…