剑指offerpython_《剑指offer》3. 从尾到头打印单链表值【Java+Python】
从尾到头打印单链表值
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】相关推荐
- 【LeetCode笔记】剑指 Offer 06. 从尾到头打印链表(Java、翻转链表)
文章目录 题目描述 思路 & 代码 二刷 题目描述 思路 & 代码 一次遍历:翻转链表 + 记录长度 二次遍历:遍历翻转后的链表,更新数组 O(n) & O(1) /*** D ...
- 《LeetCode力扣练习》剑指 Offer 06. 从尾到头打印链表 Java
<LeetCode力扣练习>剑指 Offer 06. 从尾到头打印链表 Java 一.资源 题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入: ...
- LeetCode Algorithm 剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表 Ideas 遍历链表,每次在vector的头部insert当前元素值. Code C++ class Solution {public:vector< ...
- 【LeetCode】剑指 Offer 06. 从尾到头打印链表
[LeetCode]剑指 Offer 06. 从尾到头打印链表 文章目录 [LeetCode]剑指 Offer 06. 从尾到头打印链表 一.笨比解法 二.递归法 三.辅助栈法 总结 一.笨比解法 算 ...
- LeetCode-剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表 思路一:翻转 1:用vector存从头到尾的每个节点值 2:返回时候用reverse翻转一下 时间复杂度:O(n) 空间复杂度:O(n) /*** Defi ...
- 【剑指Offer】从尾到头打印链表
剑指Offer 从尾到头打印链表 题目描述 解法1 实现代码 一点补充 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解法1 这道题主要思路是while循环从头遍历整个列 ...
- 剑指Offer #03 从尾到头打印链表(递归)
题目来源:牛客网-剑指Offer专题 题目地址:从尾到头打印链表 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 题目解析 方法一: 因为题目要求返回的顺序是从尾到头,所以我 ...
- 【三种解法】剑指 Offer 06. 从尾到头打印链表【附完整可运行代码】
立志用最少的代码做最高效的表达 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表 ...
- 剑指 Offer 06. 从尾到头打印链表(python3编写)
目录 1.题目描述: 2.方法一:使用栈保存结果 思路: 代码(迭代法): 代码(递归法): 3.方法二:反转链表 思路: 代码: 4.方法三:保存数组,再反转数组 思路: 代码: 5.总结: 1.题 ...
最新文章
- python3读取excel数据-Python3读取和写入excel表格数据的示例代码
- python进程多任务
- 04_数据库升级onUpgradeondowngrade
- Java EE 7的高峰–使用EclipseLink的多租户示例
- JSP 简介(转载)
- iOS NSString 与NSData转化
- 中运用_钢琴教学中指法的安排与运用
- 三星app图标不见了怎么恢复_电脑任务栏显示桌面图标不见了怎么办
- 比特币价格跌破3万美元登上彭博社头版
- [九省联考2018]秘密袭击coat
- 关于 in与exist , not in与not exist 的区别
- 程序员新入手MacStudio的装机环境
- 分仓软件是什么?资管分仓的作用
- 解决 误删Path环境变量的问题
- XZ_Swift 之HealthKit 获取手机计步统计
- 读博不怎么花家里的钱,为什么还说穷人不要读博
- latex:表格排版示例
- 【华人学者风采】聂飞平 西北工业大学
- C语言基础之排列组合数字
- PHP审计-RIPS
热门文章
- java11模块化开发_【JDK 11】关于 Java 模块系统,看这一篇就够了
- 开放下载!《AliOS Things快速开发指南》
- 漫画通信:有了它,终于可以放心买买买了
- 如何基于Weex实现创新交互体验?手淘开源技术BindingX案例解析
- k8s包管理器helm_eShopOnContainers 知多少[10]:部署到 K8S | AKS
- 美术设计经验分享:6招提升照明效果
- 《鬼泣V》:旧时代的标杆在新时代的窘境
- 做一个更好的A牌 从《Artifact》2.0看Valve的设计思路
- Python小游戏(打地鼠)
- Java面试题 String类能不能被继承?为什么?