从尾到头打印单链表值

1. 题目描述

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

2. 示例

3. 解题思路

此题比较简单

第一种方法:使用数组。先从头到尾读取链表数据,保存到一个数组a中。由于要获取从尾到头数据,新开一个数组b,从数组a尾部到头部开始读取,保存到数组b中。

第二种方法:使用栈。先从头到尾读取链表数据,保存到一个栈a中。利用栈先进后出的性质,pop到数组a中。

4. Java实现方法一:使用数组/**

* public class ListNode {

* int val;

* ListNode next = null;

*

* ListNode(int val) {

* this.val = val;

* }

* }

*

*/

import java.util.ArrayList;

public class Solution {

public ArrayList printListFromTailToHead(ListNode listNode) {

ArrayList res = new ArrayList();

if (listNode == null){

return res;

}

while(listNode != null){

res.add(listNode.val);

listNode = listNode.next;

}

ArrayList ress = new ArrayList();

for(int i = res.size()-1; i >= 0; i--){

ress.add(res.get(i));

}

return ress;

}

}方法二:使用栈/**

* public class ListNode {

* int val;

* ListNode next = null;

*

* ListNode(int val) {

* this.val = val;

* }

* }

*

*/

import java.util.ArrayList;

import java.util.Stack;

public class Solution {

public ArrayList printListFromTailToHead(ListNode listNode) {

// 使用栈结构实现

ArrayList res = new ArrayList();

if (listNode == null){

return res;

}

Stack stack = new Stack();

while (listNode != null){

stack.push(listNode.val);

listNode = listNode.next;

}

while (!stack.isEmpty()){

res.add(stack.pop());

}

return res;

}

}

5. Python实现第一种方法使用栈

第二种直接数组头插法,代码简洁,但是复杂度较高# 从尾到头依次打印单链表的值# 从尾到头依次打印单链表的值

class ListNode:

def __init__(self, x=None):

self.val = x

self.next = None

class Solution:

def printListFromTailToHead(self, listNode):

if not listNode: #如果头部结点为空

return

stack = []

while listNode:

stack.append(listNode.val)

listNode = listNode.next

while stack:

print(stack.pop())

# return sorted(stack, reverse=True)

def printListFromTailToHead2(self, listNode):

if not listNode:

return

li = []

while listNode:

li.insert(0, listNode.val)

listNode = listNode.next

return li

node1 = ListNode(10)

node2 = ListNode(11)

node3 = ListNode(13)

node1.next = node2

node2.next = node3

singleNode = ListNode(12)

test = ListNode()

S = Solution()

print(S.printListFromTailToHead2(node1))

print(S.printListFromTailToHead2(test))

print(S.printListFromTailToHead2(singleNode))如果您觉得本文有用,请点个“在看”

剑指offerpython_《剑指offer》3. 从尾到头打印单链表值【Java+Python】相关推荐

  1. 【LeetCode笔记】剑指 Offer 06. 从尾到头打印链表(Java、翻转链表)

    文章目录 题目描述 思路 & 代码 二刷 题目描述 思路 & 代码 一次遍历:翻转链表 + 记录长度 二次遍历:遍历翻转后的链表,更新数组 O(n) & O(1) /*** D ...

  2. 《LeetCode力扣练习》剑指 Offer 06. 从尾到头打印链表 Java

    <LeetCode力扣练习>剑指 Offer 06. 从尾到头打印链表 Java 一.资源 题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入: ...

  3. LeetCode Algorithm 剑指 Offer 06. 从尾到头打印链表

    剑指 Offer 06. 从尾到头打印链表 Ideas 遍历链表,每次在vector的头部insert当前元素值. Code C++ class Solution {public:vector< ...

  4. 【LeetCode】剑指 Offer 06. 从尾到头打印链表

    [LeetCode]剑指 Offer 06. 从尾到头打印链表 文章目录 [LeetCode]剑指 Offer 06. 从尾到头打印链表 一.笨比解法 二.递归法 三.辅助栈法 总结 一.笨比解法 算 ...

  5. LeetCode-剑指 Offer 06. 从尾到头打印链表

    剑指 Offer 06. 从尾到头打印链表 思路一:翻转 1:用vector存从头到尾的每个节点值 2:返回时候用reverse翻转一下 时间复杂度:O(n) 空间复杂度:O(n) /*** Defi ...

  6. 【剑指Offer】从尾到头打印链表

    剑指Offer 从尾到头打印链表 题目描述 解法1 实现代码 一点补充 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解法1 这道题主要思路是while循环从头遍历整个列 ...

  7. 剑指Offer #03 从尾到头打印链表(递归)

    题目来源:牛客网-剑指Offer专题 题目地址:从尾到头打印链表 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 题目解析 方法一: 因为题目要求返回的顺序是从尾到头,所以我 ...

  8. 【三种解法】剑指 Offer 06. 从尾到头打印链表【附完整可运行代码】

    立志用最少的代码做最高效的表达 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表 ...

  9. 剑指 Offer 06. 从尾到头打印链表(python3编写)

    目录 1.题目描述: 2.方法一:使用栈保存结果 思路: 代码(迭代法): 代码(递归法): 3.方法二:反转链表 思路: 代码: 4.方法三:保存数组,再反转数组 思路: 代码: 5.总结: 1.题 ...

最新文章

  1. python3读取excel数据-Python3读取和写入excel表格数据的示例代码
  2. python进程多任务
  3. 04_数据库升级onUpgradeondowngrade
  4. Java EE 7的高峰–使用EclipseLink的多租户示例
  5. JSP 简介(转载)
  6. iOS NSString 与NSData转化
  7. 中运用_钢琴教学中指法的安排与运用
  8. 三星app图标不见了怎么恢复_电脑任务栏显示桌面图标不见了怎么办
  9. 比特币价格跌破3万美元登上彭博社头版
  10. [九省联考2018]秘密袭击coat
  11. 关于 in与exist , not in与not exist 的区别
  12. 程序员新入手MacStudio的装机环境
  13. 分仓软件是什么?资管分仓的作用
  14. 解决 误删Path环境变量的问题
  15. XZ_Swift 之HealthKit 获取手机计步统计
  16. 读博不怎么花家里的钱,为什么还说穷人不要读博
  17. latex:表格排版示例
  18. 【华人学者风采】聂飞平 西北工业大学
  19. C语言基础之排列组合数字
  20. PHP审计-RIPS

热门文章

  1. java11模块化开发_【JDK 11】关于 Java 模块系统,看这一篇就够了
  2. 开放下载!《AliOS Things快速开发指南》
  3. 漫画通信:有了它,终于可以放心买买买了
  4. 如何基于Weex实现创新交互体验?手淘开源技术BindingX案例解析
  5. k8s包管理器helm_eShopOnContainers 知多少[10]:部署到 K8S | AKS
  6. 美术设计经验分享:6招提升照明效果
  7. 《鬼泣V》:旧时代的标杆在新时代的窘境
  8. 做一个更好的A牌 从《Artifact》2.0看Valve的设计思路
  9. Python小游戏(打地鼠)
  10. Java面试题 String类能不能被继承?为什么?