剑指Offer 面试题06. 从尾到头打印链表

简介: 剑指Offer 面试题06. 从尾到头打印链表

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

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

输入:head = [1,3,2]

输出:[2,3,1]

解题代码及思路

可以利用栈的特性:先进后出。来完成这个题目,遍历head,遍历到为空为止,然后每一次遍历都取出val,压如栈中。

取出栈时就是到着的。

效率不太高

import sun.security.util.ArrayUtil;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * @Auther: truedei
 * @Date: 2020 /20-5-6 22:46
 * @Description:
 */
public class TestA {
    static  public int[] reversePrint(ListNode head) {
        Stack<Integer> stack = new Stack<>();
        ListNode newLN = null;
        while ((newLN=head)!=null){
            stack.push(newLN.val);
            head=head.next;
        }
        int[] ints = new int[stack.size()];
        int i = 0;
        while (!stack.empty()){
            ints[i++] = stack.pop();
        }
        return ints;
    }
    public static void main(String[] args) {
        ListNode a = new ListNode(1);
        ListNode b = new ListNode(3);
        ListNode c = new ListNode(2);
        a.next=b;
        b.next=c;
        Long starTime = System.nanoTime(); // 纳秒
        int[] ints = reversePrint(a);
        System.out.println(ints.toString());
        Long endTime = System.nanoTime() ; // 纳秒
        System.out.println("+=用时:"+(endTime - starTime)+"纳秒");
    }
}
class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}


目录
相关文章
|
1月前
《剑指offer》——合并两个排序的链表
《剑指offer》——合并两个排序的链表
|
1月前
《剑指offer》——从尾到头打印链表
《剑指offer》——从尾到头打印链表
|
1月前
|
存储 算法
【数据结构与算法】【腾讯阿里链表面试题】算法题--链表易懂版讲解
【数据结构与算法】【腾讯阿里链表面试题】算法题--链表易懂版讲解
|
1月前
|
存储 算法 Java
【数据结构与算法】2、链表(简单模拟 Java 中的 LinkedList 集合,反转链表面试题)
【数据结构与算法】2、链表(简单模拟 Java 中的 LinkedList 集合,反转链表面试题)
43 0
|
2月前
|
算法
《剑指offer》之从“尾到头打印链表”题解
《剑指offer》之从“尾到头打印链表”题解
14 2
|
1月前
|
算法
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)
|
1月前
|
存储
LeetCode刷题---817. 链表组件(哈希表)
LeetCode刷题---817. 链表组件(哈希表)
|
1月前
|
存储 C语言 索引
环形链表、环形链表 II、有效的括号​​​​​​​【LeetCode刷题日志】
环形链表、环形链表 II、有效的括号​​​​​​​【LeetCode刷题日志】
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
1月前
|
算法 安全 数据处理
LeetCode刷题---707. 设计链表(双向链表-带头尾双结点)
LeetCode刷题---707. 设计链表(双向链表-带头尾双结点)