链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/

标签:链表

题目

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

输入:head = [1,3,2]
输出:[2,3,1] 0 <= 链表长度 <= 10000

分析

这题要你从尾到头打印链表,也就是倒序输出链接,但它要的返回值是一个数组。

解法一:双端队列法。使用双端队列,遍历链表,每次插入链表的头部。然后遍历队列,每次从队列尾部拿数据放入数组即可。

解法二:先遍历一遍链表,求出链表总共有多少个元素,然后再次遍历链表,把值从数组的尾部往前插入即可。

编码

解法一

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
Deque<Integer> res = new LinkedList<>();
int count = 0; while (head != null) {
res.offerFirst(head.val);
head = head.next;
count++;
} int[] values = new int[count];
count = 0;
while (!res.isEmpty()) {
values[count++] = res.poll();
} return values;
}
}

时间复杂度O(n),空间复杂度O(n)

解法二

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int[] reversePrint(ListNode head) {
ListNode node1 = head;
int count = 0;
while (node1 != null) {
count++;
node1 = node1.next;
} int[] nums = new int[count];
ListNode node2 = head;
while (node2 != null) {
nums[--count] = node2.val;
node2 = node2.next;
} return nums;
}
}

时间复杂度O(n), 空间复杂度O(n)

剑指 Offer 06. 从尾到头打印链表的更多相关文章

  1. 菜鸟刷题路:剑指 Offer 06. 从尾到头打印链表

    剑指 Offer 06. 从尾到头打印链表 class Solution { public int[] reversePrint(ListNode head) { Stack<Integer&g ...

  2. 力扣 - 剑指 Offer 06. 从尾到头打印链表.md

    题目 剑指 Offer 06. 从尾到头打印链表 思路1(递归) 首先先遍历整个脸表,计算出链表的长度(用于初始化数组).然后进行递归,从链表头部递归到尾部,这期间什么都不做,直到递归到最后一个节点的 ...

  3. 《剑指offer》从尾到头打印链表

    本题来自<剑指offer> 从尾到头打印链表 题目: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路: 方案一:首先遍历到尾部,然后从尾部进行到头值进行操作,后进先 ...

  4. 【Java】 剑指offer(5) 从尾到头打印链表

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个链表的头结点,从尾到头反过来打印出每个结点的值.结点定义如下: ...

  5. Go语言实现:【剑指offer】从尾到头打印链表

    该题目来源于牛客网<剑指offer>专题.​ 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. Go语言实现: type ListNode struct { Val int ...

  6. [剑指Offer] 3.从尾到头打印链表

    题目描述 输入一个链表,从尾到头打印链表每个节点的值. [思路]用一个vector存储,遍历链表时每次从前面插入 /** * struct ListNode { * int val; * struct ...

  7. [剑指offer]6.从尾到头打印链表+18.删除链表节点

    链表 6.从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 方法一 迭代 创建空列表res,将链表值head.val依次存进res,返回翻转后的res 代码 cl ...

  8. 剑指offer:从尾到头打印链表

    题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路 在不改变链表结构的前提下,因为单向链表本身的结构是从头到尾的,现在用从尾到头遍历打印,可以联想到“先进后出”, 因此我 ...

  9. 剑指Offer 3. 从尾到头打印链表 (链表)

    题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 题目地址 https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35 ...

随机推荐

  1. Portswigger web security academy:Server-side template injection(SSTI)

    Portswigger web security academy:Server-side template injection(SSTI) 目录 Portswigger web security ac ...

  2. anaconda安装教程

    Anaconda是一个方便的python包管理和环境管理软件,一般用来配置不同的项目环境.我们常常会遇到这样的情况,正在做的项目A和项目B分别基于python2和python3,而第电脑只能安装一个环 ...

  3. web技术培训(二)-Flask后端框架初识

    web网站发展至今,特别是服务器端,涉及到的知识.内容,非常广泛.这对程序员的要求会越来越高.如果采用成熟,稳健的框架,那么一些基础的工作,比如,安全性,数据流控制等都可以让框架来处理,那么程序开发人 ...

  4. 混部之殇-论云原生资源隔离技术之CPU隔离(一)

    作者 蒋彪,腾讯云高级工程师,10+年专注于操作系统相关技术,Linux内核资深发烧友.目前负责腾讯云原生OS的研发,以及OS/虚拟化的性能优化工作. 导语 混部,通常指在离线混部(也有离在线混部之说 ...

  5. PlantUML --- 使用代码快速绘制时序图、思维导图

    本篇思维导图 @startmindmap <style> mindmapDiagram { .green { BackgroundColor lightgreen } .rose { Ba ...

  6. 拷贝构造函数第一个参数最好使用const

    拷贝构造函数的第一个参数要求是自身类型的引用,但是没有一定要求具有底层const属性即对常量的引用,但是使用时最好加上const,原因是我们可能在某些"不知道"的情况下对常量对象调 ...

  7. C++知识概要

    static的用法和作用 在全局变量前加上关键字 static,全局变量就定义成一个全局静态变量.存储在静态存储区,在整个程序运行期间一直存在.同时全局静态变量在声明他的文件之外是不可见的 在局部变量 ...

  8. 010.Ansible_palybook 循环语句

    Ansible循环语句 1 简介 我们在编写playbook的时候,不可避免的要执行一些重复性操作,比如指安装软件包,批量创建用户,操作某个目录下的所有文件等.正如我们所说,ansible一门简单的自 ...

  9. k8s管理机密信息(12)

    一.启动应用安全信息的保护 1.Secret介绍 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 ...

  10. IT菜鸟之虚拟机VMware的安装

    老师说过,如果想学好Linux,最好不要在实体机上安装Linux,因为学习需要经常折腾,在实体机上做实验,出现故障就要重新安装,这样绝大多数时间都会浪费在安装上. 这时我们需要一个工具,它就是虚拟机. ...