面试题 6. 从尾到头打印链表

NowCoder

题目描述

输入一个链表的头结点,从尾到头反过来打印出每个结点的值。

Java 实现

ListNode Class

class ListNode {
int val;
ListNode next = null; ListNode(int val) {
this.val = val;
} @Override
public String toString() {
return val + "->" + next;
}
}

使用递归

import java.util.ArrayList;

public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> res = new ArrayList<>();
if (listNode == null) {
return res;
}
res.addAll(printListFromTailToHead(listNode.next));
res.add(listNode.val);
return res;
}
}

使用头插法

import java.util.ArrayList;

public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> res = new ArrayList<>();
ListNode head = new ListNode(-1);
while (listNode != null) {
ListNode newHead = listNode.next;
listNode.next = head.next;
head.next = listNode;
listNode = newHead;
}
while (head.next != null) {
res.add(head.next.val);
head = head.next;
}
return res;
}
}

使用栈

import java.util.ArrayList;
import java.util.Stack; public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> res = new ArrayList<>();
Stack<Integer> stack = new Stack<>();
while (listNode != null) {
stack.push(listNode.val);
listNode = listNode.next;
}
while (!stack.isEmpty()) {
res.add(stack.pop());
}
return res;
}
}

最新文章

  1. TFS工作项数据统计及相关数据库结构分析
  2. .net两个对象比较,抛出不一样字段的结果
  3. OkHttp简介
  4. 详细整合教程(Spring+SpringMVC+MyBatis)
  5. CSS3随内容自动伸缩的背景【转】
  6. oracle函数,查询,事务
  7. Paramiko 模块使用
  8. Spring的BeanFactoryPostProcessor和BeanPostProcessor
  9. table中绝对定位元素相对td定位失效解决方案
  10. big_table练习数据表
  11. VHDL TestBench 测试终止时自动结束仿真——assert方法
  12. 搭建typescript开发环境最详细的全过程
  13. 201521123068《Java程序设计》第4周学习总结
  14. Solr简单使用
  15. Codeforces Round #547 (Div. 3)
  16. Docker学习笔记-简单运行.netcore
  17. mysql 查询优化 ~explain解读之type的解读
  18. 为何time_before 起作用【转】
  19. 小米 OJ 编程比赛 03 月常规赛
  20. rsync 数据备份+cron+mailx案例

热门文章

  1. LeetCode 1043. Partition Array for Maximum Sum
  2. Jmeter 正则表达式提取器详解(Regular Expression Exactor)
  3. [USACO12MAR]花盆 二分 单调队列
  4. 03-树2 List Leaves (25 分)
  5. 如何打开 win 10 内置应用
  6. [HAOI2018]染色(NTT)
  7. solr(一) 单节点安装部署
  8. 安装python 3.7
  9. python基于redis实现分布式锁
  10. typescript - 8.命名空间