剑指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.从尾到头打印链表相关推荐

  1. JavaScript——leetcode剑指06 从尾到头打印链表

    JavaScript--leetcode剑指06从尾到头打印链表 题目描述 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出: ...

  2. 剑指Offer 从尾到头打印链表

    题目描述 输入一个链表,从尾到头打印链表每个节点的值. 输入描述: 输入为链表的表头 输出描述: 输出为需要打印的"新链表"的表头 思路: 用容器vector,递归到最后一个元素, ...

  3. java输出链表的值_[剑指offer] 从尾到头打印链表(三种方法) java

    一.每次把新遍历的链表值放到list索引为0的位置,实现逆序. public class Solution { public ArrayList printListFromTailToHead(Lis ...

  4. 剑指offer5 从尾到头打印链表

    错误代码: class Solution { public:vector<int> printListFromTailToHead(ListNode* head){vector<in ...

  5. 剑指offer-3 从尾到头打印链表

    /** *  struct ListNode { *        int val; *        struct ListNode *next; *        ListNode(int x) ...

  6. 【剑指Offer】从尾到头打印链表

    剑指Offer 从尾到头打印链表 题目描述 解法1 实现代码 一点补充 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解法1 这道题主要思路是while循环从头遍历整个列 ...

  7. 【三种解法】剑指 Offer 06. 从尾到头打印链表【附完整可运行代码】

    立志用最少的代码做最高效的表达 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表 ...

  8. 剑指offer06:从尾到头打印链表

    题目描述: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 解题思路: 从尾到头打印链表,优先考虑栈,因为想 ...

  9. 【剑指Offer专题】链表系列:从尾到头打印链表、反转链表、回文链表、合并两个排序的链表(C++和Python实现)...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 剑指Offer(三):从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每 ...

最新文章

  1. python 英文字符频率统计 采用降序方式输出_Python读取英文文件并记录每个单词出现次数后降序输出示例...
  2. devi into python 笔记(一)字典 列表的简单操作
  3. 3.1.1 内存的基础知识
  4. java joda 获取utc时间_java – 使用JodaTime以毫秒为单位的UTC到本地时间
  5. 51Nod - 1024 矩阵中不重复的元素(数学)
  6. Node.js: 如何退出node命令或者node server
  7. [转载]MySQL开发中常用的查询语句总结
  8. 第二章 Mablab语言基础
  9. Java 项目实战 坦克大战(一)--准备
  10. git-scm.com下载文件特别慢怎么办,自己拿吧
  11. qq视频资源源码功能有哪些
  12. 无源晶振负载电容值CL匹配方法及说明
  13. Pytorch 损失函数 Mean Squared Error
  14. C语言计算日期间隔天数的经典算法解析
  15. opencv 打开摄像头
  16. ASM介绍及简易教程
  17. 五 蓝牙低功耗(BLE)协议栈 之 ATT层
  18. Arduino ESP8266 MQTT 阿里 腾讯 连接示例
  19. Java调用身份证读取器(中控)读取信息并转换为Json,并拆分地址(正则)
  20. 用javascript实现一棵简单的树

热门文章

  1. 6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)
  2. 文巾解题 203. 移除链表元素
  3. html5常见面试题,HTML5常见面试题及答案
  4. mongodb 企业版_MongoDB 凉了?
  5. 今日话题:月薪过万真的很难吗?
  6. Python---获取div标签中的文字
  7. LeetCode-动态规划基础题-343. 整数拆分
  8. numpy.arcsin详解
  9. Youtube推荐系统是如何挖掘用户内心另一面的
  10. 经济学人使用Golang构建微服务历程回顾