题目描述

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

解题思路

思路1:

顺序遍历链表,取出每个结点的数据,插入list中。

由于要求list倒序存储链表中的数据,而我们是顺序取数据,所以采用了‘头插’的方式,每次将顺序取出的数据存在list表头,即add(0,data)。

思路2:

顺序遍历链表,取出每个结点的数据,压入栈中;遍历结束后,将元素顺序出栈并添加至list列表末尾。

代码如下

思路1:

 import java.util.ArrayList; public class list {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list = new ArrayList<Integer>();
ListNode walkNode=listNode;
while(walkNode!=null){
list.add(0,walkNode.val);
walkNode=walkNode.next;
}
return list; }
}

复杂度分析:

思路1的实现:每取一个元素执行add(0, data)  操作,第一个元素后面的元素需要向后移动,复杂度为O(2/n)。

运行时间:21ms;占用内存:9216k;

思路2的实现:时间复杂度,add(data)  在list末尾添加元素,不需要移动元素,但是要频繁的入栈出栈;相对于方法1,该方法的空间复杂度要高,因为多使用了一个Stack栈来存储链表中的元素。

运行时间:30ms;占用内存:9268k;

思路2:

 import java.util.ArrayList;
import java.util.Stack;
public class list {
ArrayList<Integer> list = new ArrayList<Integer>();
Stack<Integer> stack=new Stack<Integer>();
ListNode walkNode=listNode;
while(walkNode!=null){
stack.push(walkNode.val);
walkNode=walkNode.next;
}
while(!stack.empty()){
list.add(stack.pop());
}
return list;
}
}

从尾到头打印列表——牛客剑指offer的更多相关文章

  1. 牛客剑指offer(持续更新~)

    第一题:二维数组的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数, ...

  2. 二维数组中的查找——牛客剑指offer

    题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整 ...

  3. 链表分割——牛客剑指offer

    题目描述: 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode pHead,请返回重新排列后的链表的头指针.注意:分割以后 ...

  4. 链表中环的入口结点——牛客剑指offer

    题目描述: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. 题目分析: 从上图中可以看出,环的入口结点和其他结点的区别:环的入口结点是有两个指针指向的,其他结点除了头结点都 ...

  5. 删除链表中重复的结点——牛客剑指offer

    题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理 ...

  6. php实现从尾到头打印列表

    php实现从尾到头打印列表 一.总结 4.数组倒序:array_reverse() 5.函数肯定要return,而不是echo 二.php实现从尾到头打印列表 输入一个链表,从尾到头打印链表每个节点的 ...

  7. 牛客剑指Offer-数字在升序数组中出现的次数

    题目 统计一个数字在升序数组中出现的次数. 示例1 输入 [1,2,3,3,3,3,4,5],3 返回值 4 题解 第一种最简单的方法是O(n)复杂度.遍历数组统计结果. public int Get ...

  8. 【剑指Offer学习】【全部面试题汇总】

    剑指Offer学习 剑指Offer这本书已经学习完了.从中也学习到了不少的东西,如今做一个总的文件夹.供自已和大家一起參考.学如逆水行舟.不进则退.仅仅有不断地学习才干跟上时候.跟得上技术的潮流! 全 ...

  9. 【剑指Offer学习】【所有面试题汇总】

    剑指Offer学习 剑指Offer这本书已经学习完了,从中也学习到了不少的东西,现在做一个总的目录,供自已和大家一起参考,学如逆水行舟,不进则退.只有不断地学习才能跟上时候,跟得上技术的潮流! 所有代 ...

随机推荐

  1. LightGBM GPU python版本安装

    失败的安装尝试 1.官方Guide https://lightgbm.readthedocs.io/en/latest/GPU-Windows.html 生成在windows下可执行的exe程序,但是 ...

  2. leetcode-hard-array-287. Find the Duplicate Number

    mycode   77.79% class Solution(object): def findDuplicate(self, nums): """ :type nums ...

  3. DP&图论 DAY 3 下午 考试

    Problem AProblem Description有一天 Tarzan 写了一篇文章,我们发现这文章当中一共出现了 n 个汉字,其中第 i 个汉字出现了 ai 次,因为 Tarzan 不希望文章 ...

  4. C#类型转换类(通用类)

    //     /// 类型转换类     /// 处理数据库获取字段为空的情况     ///     public static class DBConvert     {         #reg ...

  5. 网络通信框架之okHttpUtils

    okHttpUtils封装库志支持: 一般的get请求 一般的post请求 基于Http的文件上传 文件下载 上传下载的进度回调 加载图片 支持请求回调,直接返回对象.对象集合 支持session的保 ...

  6. JavaScript 格式化数字成金额格式

    在看公司一个项目的JavaScript代码时,发现一段JavaScript代码,是把数字格式化成金额格式 比如: 12345.678 格式化成  12,345.68 看完代码后,google了一下,发 ...

  7. python 连接mysql数据库:pymysql

    示例:import pymysql conn=pymysql.connect( host="127.0.0.1", #数据库IP port=3306, #数据库端口 user=&q ...

  8. java源码-HashMap源码分析

    这次开始分析JDK8中的HashMap源码. 首先理解HashMap中几个关键变量, TREEIFY_THRESHOLD  链表转换红黑树扩容值 table 数组+链表+红黑树  size 当前存储数 ...

  9. padding的计算方法

    转自https://blog.csdn.net/qq_34599526/article/details/83755275 VALID:如果卷积核超出特征层,就不再就计算,即卷积核右边界不超出Featu ...

  10. python基础知识(正则表达式)

    使用正则表示式分割字符串 split() re.split(pattern,string,[maxsplit],[flags]) re.split(指定一个模式字符串,要匹配的字符串,最大的拆分次数, ...