美文网首页
6.从尾到头打印链表

6.从尾到头打印链表

作者: Hwyoung | 来源:发表于2018-08-28 15:05 被阅读5次

题目

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


思路

1.使用栈 O(N)+O(N)

public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
    Stack<Integer> stack = new Stack<>();
    while (listNode != null) {
        stack.add(listNode.val);
        listNode = listNode.next;
    }
    ArrayList<Integer> ret = new ArrayList<>();
    while (!stack.isEmpty())
        ret.add(stack.pop());
    return ret;
}

2.使用递归

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

3.头插法 O(N)+O(1)

public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
    // 头插法构建逆序链表
    ListNode head = new ListNode(-1);
    while (listNode != null) {
        ListNode memo = listNode.next;
        listNode.next = head.next;
        head.next = listNode;
        listNode = memo;
    }
    // 构建 ArrayList
    ArrayList<Integer> ret = new ArrayList<>();
    head = head.next;
    while (head != null) {
        ret.add(head.val);
        head = head.next;
    }
    return ret;
}

4.使用Collections.reserve方法

public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
    ArrayList<Integer> ret = new ArrayList<>();
    while (listNode != null) {
        ret.add(listNode.val);
        listNode = listNode.next;
    }
    Collections.reverse(ret);
    return ret;
}

相关文章

  • 剑指offer(第二版)题目分类整理

    链表 ~~~6. 从尾到头打印链表 ###18.1 在 O(1) 时间内删除链表节点 需要分情况,是否是尾节点...

  • JZ-003-从尾到头打印链表

    从尾到头打印链表 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。题目链接: 从尾到头打印...

  • 2.3.3 链表

    面试题6:从尾到头打印链表 输入一个链表,从尾到头打印链表每个节点的值。

  • 6.从尾到头打印链表

    题目 输入链表的第一个节点,从尾到头反过来打印出每个结点的值。 思路 1.使用栈 O(N)+O(N) 2.使用递归...

  • 6.从尾到头打印链表

    由于链表在内存中不是连续存储的,所以必须要知道链表头指针的地址。由于是从尾到头打印,自然而然想到用栈结构实现,因为...

  • 6.从尾到头打印链表

    思路:直接顺序打印链表,并入栈,出栈的顺序即为倒序

  • 6.从尾到头打印链表

    题目描述: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 代码: 思路分析: 按照从头到尾的顺序...

  • 06:从尾到头打印链表

    题目06:从尾到头打印链表 输入一个链表,从尾到头打印链表每个节点的值。 思路 一. 栈 从头遍历链表,先访问的后...

  • 《剑指offer》— JavaScript(3)从尾到头打印链表

    从尾到头打印链表 题目描述 输入一个链表,从尾到头打印链表每个节点的值。 实现代码 相关知识 链表是一种物理存储单...

  • <<剑指offer>>--javascript(3)-从尾到头打

    从尾到头打印链表 题目描述 输入一个链表,从尾到头打印链表每个节点的值 代码如下 解题思路 链表是一种物理存储单元...

网友评论

      本文标题:6.从尾到头打印链表

      本文链接:https://www.haomeiwen.com/subject/rhsfwftx.html