题目描述

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

示例 1: 输入:head = [1,3,2] 输出:[2,3,1]

限制: 0 <= 链表长度 <= 10000

Java

public class Solution06 {
public static void main(String[] args) {
ListNode n1 = new ListNode(1);
ListNode n2 = new ListNode(3);
ListNode n3 = new ListNode(2);
n1.next = n2;
n2.next = n3;
n3.next = null;
Solution s = new Solution();
System.out.println(Arrays.toString(s.reversePrint(n1)));
System.out.println(Arrays.toString(s.reversePrint2(n1)));
}
} class Solution {
ArrayList<Integer> tmp = new ArrayList<>(); /**
* 方法一:递归
*/
public int[] reversePrint(ListNode head) {
reCur(head); // int[] Integer[] List<Integer> 三种转换 // int[] -> Integer[]
// Integer[] integers1 = Arrays.stream(data).boxed().toArray(Integer[]::new);
// int[] -> List<Integer>
// List<Integer> list1 = Arrays.stream(data).boxed().collect(Collectors.toList()); // Integer[] -> int[]
// int[] arr2 = Arrays.stream(integers1).mapToInt(Integer::valueOf).toArray();
// Integer[] -> List<Integer>
// List<Integer> list2 = Arrays.asList(integers1); // List<Integer> -> int[]
// int[] arr1 = list1.stream().mapToInt(Integer::valueOf).toArray();
// List<Integer> -> Integer[]
// Integer[] integers2 = list1.toArray(new Integer[0]); return tmp.stream().mapToInt(Integer::valueOf).toArray();
} void reCur(ListNode head) {
if (head == null) return;
reCur(head.next);
tmp.add(head.val);
} /**
* 方法二:辅助栈
*/
public int[] reversePrint2(ListNode head) {
Stack<ListNode> stack = new Stack<>();
while (head != null) {
stack.push(head);
head = head.next;
}
int size = stack.size();
int[] print = new int[size];
for (int i = 0; i < size; ++i) {
print[i] = stack.pop().val;
} return print;
}
} class ListNode {
int val;
ListNode next;
ListNode(int x) {
this.val = x;
}
}

C++


Python


总结

int[]、Integer[]、List 之间的转换:

        // int[] -> Integer[]
Integer[] integers1 = Arrays.stream(data).boxed().toArray(Integer[]::new);
// int[] -> List<Integer>
List<Integer> list1 = Arrays.stream(data).boxed().collect(Collectors.toList()); // Integer[] -> int[]
int[] arr2 = Arrays.stream(integers1).mapToInt(Integer::valueOf).toArray();
// Integer[] -> List<Integer>
List<Integer> list2 = Arrays.asList(integers1); // List<Integer> -> int[]
int[] arr1 = list1.stream().mapToInt(Integer::valueOf).toArray();
// List<Integer> -> Integer[]
Integer[] integers2 = list1.toArray(new Integer[0]);

【剑指 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 06. 从尾到头打印链表

    链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 标签:链表 题目 输入一个链表的头节点,从尾到头 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. CF873D Merge Sort

    其实最优的方法其他的题解已经讲得很好了,本题解仅用于记录和分享一个新的思路. 这道题是让你输出符合条件的序列,而序列的每个数之间具有一定的逻辑关系,很容易想到拓扑排序,于是此题就变为,如何找出满足条件 ...

  2. ado.net使用sqlparameter的方式

    使用sqlparameter的方式,最终执行的sql语句 exec sp_executesql N'select top 1 ID,ZhangHu,MiMa,RID,ShiJian,EndTime,I ...

  3. python程序的三种控制结构

    程序的三种控制结构 什么是控制结构? """ 程序有三种基本结构组成:顺序结构.分支结构.循环结构.任何程序都是由这三种基本结构组成. 顺序结构是程序按照线性顺序依次执行 ...

  4. Int,String,Integer,double之间的类型的相互转换

    Int整数,String字符串之间的类型的转换 int转成String 结果为: String转成int类型 结果为: double转成String 结果为: String转成double 结果为: ...

  5. 要你命3000会员版v20.03_全球抖音模式

    要你命3000是搭配抖音和极其多软件的神器,支持国际版.国内版,可以去除全部限制,无需爬墙,无需拔卡,35个国家/自由切换,真心强大,请务必低调,谢谢合作. 下载地址:https://sansuinb ...

  6. SpringBoot + Mybatis-Plus 实现多数据源简单示例

    1. 简介   在单体项目中,经常出现想要访问多个数据源的情况,或者因为某些性能瓶颈,将大数据量的业务表分离到另一个库等情况.   实现多数据源的方案有很多,Mybatis-Plus提供了非常简单的实 ...

  7. django获取choices的显示值

    1,models.py #订单表 class Orders(models.Model): status_cat = ( ('0', '待装货'), ('1', '正在运输'), ('2', '已到达目 ...

  8. 5分钟完全掌握Python协程

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 1. 协程相关的概念 1.1 进程和线程 进程(Process)是应用程序启动的实例,拥有代码.数据 ...

  9. Linux环境下使用logrotate工具实现nginx日志切割

    一. 前提背景及需求 nginx运行日志默认保存在nginx安装目录下的 /usr/local/nginx/logs 文件夹, 包含access.log和error.log两个文件. (1) acce ...

  10. Access 数据库容量问题

    1.单个表的最大容量  2G. 2.单个表的最大条数 3.自动编号的最大数 4.数据库的最大容量 5.text备注形式的字段的最大数据量 6.ole对象字段的最大数据量,图片的最大大小 7.文本字段的 ...