从尾到头打印链表
来源:互联网 发布:杭州贰贰网络 编辑:程序博客网 时间:2024/06/02 01:00
链接:https://www.nowcoder.com/questionTerminal/d0267f7f55b3412ba93bd35cfa8e8035
来源:牛客网
来源:牛客网
- 热度指数:357609 时间限制:1秒 空间限制:32768K
输入一个链表,从尾到头打印链表每个节点的值。
分析:
思路一:利用ArrayList的插入函数Add(index,element),表示将元素element插入到位置index之前,列表后面的元素依次往后移动。循环遍历链表,然后把结点的元素依次插入到0之前即可。
/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayList;public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> res = new ArrayList<Integer>(); while(listNode != null){ res.add(0,listNode.val); listNode = listNode.next; } return res; }}
思路二:利用栈”先进后出“的特点,循环遍历数组先将链表的元素使用栈的push方法压入栈中,然后利用栈的pop方法将栈中的元素依次取出并从栈顶删除(pop()和peek()的区别详见20. Valid Parentheses),并加入arrayList即可。
/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayList;import java.util.Stack;public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> res = new ArrayList<Integer>();Stack<Integer> stack = new Stack<>();if(listNode == null)return res;while (listNode != null){stack.push(listNode.val);listNode = listNode.next;}while(!stack.isEmpty())res.add(stack.pop());return res; }}
思路三:使用递归方法,参考grass_stars的回答,这里注意若ArrayList<Integer> arrayList=new ArrayList<Integer>();放进printListFromTailToHead方法里面则无法通过。这是jvm的堆概念,引用的概念。
/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayList;import java.util.Stack;public class Solution { ArrayList<Integer> res = new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {if(listNode == null)return res;if(listNode != null){this.printListFromTailToHead(listNode.next);res.add(listNode.val);}return res; }}
阅读全文
0 0
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 1、从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 【20】从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- Offer5 从尾到头打印链表
- 从尾到头打印链表
- 1、从尾到头打印链表
- 从尾到头打印链表
- 约瑟夫,嘿嘿,你被ko了 。还有一点小感悟
- 图像类型的转换
- 观察者模式应用场景实例
- Oracle12C--操作类中的其他结构(65)
- Python正则表达式
- 从尾到头打印链表
- python正则表达式
- 班级成员表
- 【转】Linux下文件属性(drwxr-xr-x)详解以及(-rwxrwxrwx=777)
- 【多线程简单实例】_beginthreadx实现
- 第一周集训小结
- C++类和对象及其默认成员函数
- 矩阵和向量numpy
- 火爆的NB-IoT还是迷人的LoRa, 物联网的终极PK?