剑指Offer(06)从头到尾打印链表
今天是小呆刷题的第 21 天,今天的题目是:剑指 Offer 的第 6 题,从头到尾打印链表
题目要求
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例:
1 |
|
提示:
0 <= 链表长度 <= 10000
解题思路
首先这道题的输入是从头到位,但是输出却是从尾到头。也就是FILO
先进后出,这妥妥的就是栈结构嘛。所以我们可以遍历一遍链表,然后将每一项都存入数组中,最后反转数组即可。
栈结构
1 |
|
当然,利用API
的话,我们还有更加简洁的写法,毕竟 JavaScript 无所不能~(偷笑)
1 |
|
既然用到了栈结构,那小呆很自然也能想到使用递归,毕竟递归本质上就是一种栈结构。
递归算法
1 |
|
小结
这道题其实并不难,只要能想到栈结构,基本思路就出来了。当然也可以先把链表反转,然后在从头到尾顺序添加到数组中即可,但是如果面试题中不允许修改链表的话,这种方法就不太适合了。具体情况根据面试题要求选择对应解法即可。
引用
本文内容参考了以下书籍,感兴趣的同学可以购买正版图书进行阅读。
《剑指 Offer 第 2 版》——作者:何海涛
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小呆&小萌的情侣博客!
评论