剑指offer06.从尾到头打印链表
剑指offer06.从尾到头打印链表
- 1. 改变链表结构的解法
- 2.可以使用栈,递归,或者直接反向输出数组
提示:
若是面试遇到此题,最好先向面试官确认是否可以改变链表的结构,
1. 改变链表结构的解法
我们可以想到,先反转链表然后在一个一个的输出
不熟悉反转链表的建议先去看一下反转链表
反转链表的经典四句
t = pre.Next
pre.Next = cur
cur = pre
pre = t
func reversePrint(head *ListNode) []int {// 反转链表然后再输出数组if head == nil {return nil}var cur *ListNode = nilpre := headvar t *ListNodefor pre != nil {t = pre.Nextpre.Next = curcur = prepre = t}res := make([]int,0)for cur != nil{res = append(res,cur.Val)cur = cur.Next}return res
}
2.可以使用栈,递归,或者直接反向输出数组
递归有一个缺点是,当链表足够长的时候,函数的调用栈可以会爆
所以不建议使用
栈的特点先进后出也可以实现但是Go语言中没有现成的栈类型
需要自己实现比较麻烦,其他语言有栈的类型就比较方便
这里讲解一下如何反向输出数组
解题步骤 :
1.先遍历链表统计出节点的个数count
2.再循环count次,将链表中的节点的data域依次加入到数组中
3.返回数组就成功实现了反转输出
func reversePrint(head *ListNode) []int {// 统计节点个数然后反转数组if head == nil{return nil}count := 0for p := head;p != nil;p = p.Next{count++}array := make([]int,count)for ;head != nil ;head = head.Next{array[count - 1] =head.Val count--}return array
}
注意数组下标不要越界哦 所以是count - 1
切片[]int是引用类型,零值为空所以可以返回nil
剑指offer06.从尾到头打印链表相关推荐
- JavaScript——leetcode剑指06 从尾到头打印链表
JavaScript--leetcode剑指06从尾到头打印链表 题目描述 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出: ...
- 剑指Offer 从尾到头打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值. 输入描述: 输入为链表的表头 输出描述: 输出为需要打印的"新链表"的表头 思路: 用容器vector,递归到最后一个元素, ...
- java输出链表的值_[剑指offer] 从尾到头打印链表(三种方法) java
一.每次把新遍历的链表值放到list索引为0的位置,实现逆序. public class Solution { public ArrayList printListFromTailToHead(Lis ...
- 剑指offer5 从尾到头打印链表
错误代码: class Solution { public:vector<int> printListFromTailToHead(ListNode* head){vector<in ...
- 剑指offer-3 从尾到头打印链表
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) ...
- 【剑指Offer】从尾到头打印链表
剑指Offer 从尾到头打印链表 题目描述 解法1 实现代码 一点补充 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解法1 这道题主要思路是while循环从头遍历整个列 ...
- 【三种解法】剑指 Offer 06. 从尾到头打印链表【附完整可运行代码】
立志用最少的代码做最高效的表达 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表 ...
- 剑指offer06:从尾到头打印链表
题目描述: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 解题思路: 从尾到头打印链表,优先考虑栈,因为想 ...
- 【剑指Offer专题】链表系列:从尾到头打印链表、反转链表、回文链表、合并两个排序的链表(C++和Python实现)...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 剑指Offer(三):从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每 ...
最新文章
- python 英文字符频率统计 采用降序方式输出_Python读取英文文件并记录每个单词出现次数后降序输出示例...
- devi into python 笔记(一)字典 列表的简单操作
- 3.1.1 内存的基础知识
- java joda 获取utc时间_java – 使用JodaTime以毫秒为单位的UTC到本地时间
- 51Nod - 1024 矩阵中不重复的元素(数学)
- Node.js: 如何退出node命令或者node server
- [转载]MySQL开发中常用的查询语句总结
- 第二章 Mablab语言基础
- Java 项目实战 坦克大战(一)--准备
- git-scm.com下载文件特别慢怎么办,自己拿吧
- qq视频资源源码功能有哪些
- 无源晶振负载电容值CL匹配方法及说明
- Pytorch 损失函数 Mean Squared Error
- C语言计算日期间隔天数的经典算法解析
- opencv 打开摄像头
- ASM介绍及简易教程
- 五 蓝牙低功耗(BLE)协议栈 之 ATT层
- Arduino ESP8266 MQTT 阿里 腾讯 连接示例
- Java调用身份证读取器(中控)读取信息并转换为Json,并拆分地址(正则)
- 用javascript实现一棵简单的树