剑指Offer 面试题06. 从尾到头打印链表
时间:2022-07-22
本文章向大家介绍剑指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; }
}
- 2017.10.23解题报告
- Leetcode-Easy 461.Hamming Distance
- 洛谷P1439 最长公共子序列(LCS问题)
- Leetcode-Easy 575. Distribute Candies
- 洛谷P2115 [USACO14MAR]破坏Sabotage
- 修改nw.js的exe文件使其请求管理员权限
- Leetcode-Easy 728. Self Dividing Numbers
- Leetcode-Easy 412. Fizz Buzz
- 洛谷P2678 跳石头
- 洛谷P2863 [USACO06JAN]牛的舞会The Cow Prom
- 洛谷P1908 逆序对(归并排序)
- 洛谷P1137 旅行计划
- 洛谷P1722 矩阵 II
- 洛谷P1976 鸡蛋饼
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- (十二) 整合spring cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
- 树莓派定时任务不生效
- 树莓派备份系统镜像并压缩
- 树莓派Redis集群部署
- Linux防止ssh暴力破解常用方案
- 实用!8个 chrome插件玩转GitHub,单个文件下载小意思
- LeetCode105|有序数组的平方
- LeetCode104|求根到叶子节点数字之和
- LeetCode103|路径总和II
- LeetCode102|二叉树的所有路径
- LeetCode101|路径总和
- LeetCode100|两个数组的交集II
- LeetCode108|数组中重复的数字
- LeetCode107|从上打印二叉树
- LeetCode106|从尾到头打印链表