AcWing 17. 从尾到头打印链表(递归+栈)

AcWing 0x02. 语法基础课【Python3】版题解-函数/类和对象/常用库 阅读详情

如果我们将输出或者打印看做一个操作的话,那么这个问题是一个操作顺序与输入顺序相反的问题。这样的问题可以考虑使用递归算法或者用栈来存放输入数据。

1.递归

设置遍历指针访问到NULL时作为递归出口。然后将数据存入结果数组中。

具体代码如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    void recursion(ListNode *head, vector<int> &ans){
        if(!head) return;
        recursion(head -> next, ans);
        ans.push_back(head -> val);
    }
    
    vector<int> printListReversingly(ListNode* head) {
        vector<int> ans;
        recursion(head, ans);
        return ans;
    }
};

2.用栈存放输入输入数据

在按照顺序访问链表时,将每一个结点值存入一个栈当中。最后出栈顺序就是我们要的逆序输出的顺序。不过这里为了为了简化代码,我直接使用的向量及其相关方法。

具体代码如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    vector<int> printListReversingly(ListNode* head) {
        vector<int> ans;
        ListNode *p = head;
        while(p){
            ans.push_back(p -> val);
            p = p -> next;
        }
        return vector<int> (ans.rbegin(), ans.rend());
    }
};

 

数据结构归类刷题法:从核心考点到解题模板的实战指南 数据结构是计算机科学的基础,它研究数据的组织、存储和操作方式,其核心价值在于为算法提供高效的操作载体。理解数组、链表、树、哈希表等基本结构的特性和操作原理,是解决复杂算法问题的前提。通过系统性地学习和应用这些结构,可以显著提升程序性能,优化资源使用。在算法面试、考研笔试和日常开发中,数据结构的应用无处不在,例如使用哈希表实现快速查找,利用栈处理递归逻辑。本文聚焦于**归类刷题**这一高效学习方法,旨在帮助学习者通过**模式识别**和提炼通用模板,将零散的题目归纳为有限的题型,从而构建系统的解题知识体系,实现 阅读详情

相关推荐

鸿蒙系统下基于WebRTC的高效音视频通话开发实战

本文详细介绍了在鸿蒙系统下集成WebRTC技术实现高效音视频通话的实战开发。通过分析鸿蒙分布式软总线与WebRTC低延迟特性的结合优势,提供了从环境搭建、NAPI桥接层开发到音视频采集、P2P连接建立与渲染的完整流程。文章重点探讨了如何利用鸿蒙特性进行性能优化,包括网络自适应、抗抖动策略及系统级调优,旨在帮助开发者构建稳定、低延迟的实时通信应用。

night的博客 572

AcWing 17. 从尾到头打印链表(反向迭代器)

AcWing 17. 从尾到头打印链表 题意 输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值。 返回的结果用数组存储。 分析 单链表只能从头遍历,因此最初的想法是从头遍历的时候,将数据输入到数组中,然后再将数组翻转。虽然也AC了,但是没有别人写得那么好。 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(in

Alphacoo的博客 189

C# 原生数字孪生的尝试

本文介绍了使用C#实现数字孪生的基本思路。首先从爱普生官网下载机器人3D模型,然后通过Blender创建并导出带动画的FBX模型。在WPF项目中,使用HelixToolkit.SharpDX等插件加载模型,通过Viewport3DX进行3D渲染。关键点是通过动画控制器接收真实设备信号来驱动模型动画,实现物理实体与虚拟模型的同步。文中提供了完整的代码实现,包括模型导入、动画播放控制等核心功能。该方法为构建数字孪生系统提供了一种可行的技术方案。

qq_33529095的博客 1333

acwing从尾到头打印链表-倒序迭代rbegin() 和 rend()

通过,顺序存储,然后返回vector<int>的倒序迭代。通过栈的逆序,先进后出,进栈,在不断top,和pop。

2401_87338545的博客 308

Java 开发 修改【冒险岛 079 私服】完整学习流程

第 1-2 天:环境搭建 + 运行原版 079 服务端,能正常登录游戏;第 3-4 天:纯配置文件修改,掌握倍率、属性、怪物、道具的修改,改出第一个「百倍经验私服」;第 5-10 天:Java 代码基础修改,掌握 Player/Skill/Monster 核心类的修改,实现技能无冷却、一刀秒怪、升级满属性;第 11-20 天:Java 代码进阶修改,掌握业务逻辑修改,实现死亡不掉经验、自动捡物、装备强化无失败;第 21-30 天。

萧曳丶 3895

Xilinx System Generator多速率系统(Multi-Rate Systems)的使用

在本实验练习中,您将学习在System Generator中如何使用多个时钟域有效地实现具有多个数据速率的设计。

白码王子小张的博客 1093

ACWING17. 从尾到头打印链表(剑指offer)

输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值。 返回的结果用数组存储。 样例 输入:[2, 3, 5] 返回:[5, 3, 2] 思路: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) ...

tomjobs的博客 380

从IR Drop到EM分析:数字IC电源规划中那些没人明说的细节(以MTCMOS配置为例)

本文深入探讨数字IC后端设计中电源规划的关键细节,特别关注MTCMOS配置、电源网络电阻最小化和level shifter供电等实战技巧。通过分析IR Drop和EM问题,提供优化floorplan和powerplan的具体策略,帮助工程师避免常见陷阱,提升芯片设计的稳定性和可靠性。

q9w8e7r6t5的博客 511

acwing 17. 从尾到头打印链表

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: vector<in...

到处遛鸟刑警 143

Ceres Solver:从入门到使用

Ceres Solver是谷歌开源的C++非线性优化库,能够解决有约束或无约束条件下的非线性最小二乘问题。2010年之后大量的运用在谷歌的产品开发中,尤其在谷歌开源的cartographer中被大量的使用。 ceres可以在Linux,Windows,macOS,Andrioid,IOS系统进行安装使用,详情可查看下方的官网链接。 Ceres Solver 官网:http://ceres-solver.org/

非晚非晚的博客 1万+

CVE-2021-22205 GITLAB 未授权 RCE 漏洞

简介 GitLab是由GitLab Inc.开发的一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,可通过Web界面访问公开或私人项目。由于GitLab存在未授权的端点,导致该漏洞在无需进行身份验证的情况下即可进行利用。 漏洞利用 上工具 python3 poc import sys import requests from bs4 import BeautifulSoup requests.packages.urllib3.disable_warnings() def .

qq_32445755的博客 886

Acwing-反转链表Ⅰ(迭代+递归两种方法, 代码简洁)

定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 样例 输入:1->2->3->4->5->NULL 输出:5->4->3->2->1->NULL 算法1 迭代 翻转即将所有节点的next指针指向前驱节点。 由于是单链表,我们在迭代时不能直接找到前驱节点,所以我们需要一个额外的指针保存前驱节点。同时在改变当前节点的next指针前,不要忘记保存它的后继节点。 代码实现 /** * Definition for singl

weixin_44469806的博客 201

储能电池管理系统介绍(一)

介绍储能BMS的架构以及各模块功能

manjixingkong1234的专栏 1916

剑指offer第一周(acwing打卡)

剑指offer13. 找出数组中重复的数字第一次写法:第二次写法:(推荐) 13. 找出数组中重复的数字 给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。 注意:如果某些数字不在 0∼n−1 的范围内,或数组中不包含重复数字,则返回 -1; 样例 给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。 返回 2 或 3。

骑着乌云看雪 409

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

AcWing解题目录(C++)

# 试题名称 思想方法 难度 试题来源 1 A+B 简单 AcWing 2 01背包问题 简单 3 完全背包问题 简单 4 多重背包问题I 简单 5 多重背包问题II 中等 6 多重背包问题...

Zee_Chao的博客 900

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

acwing-01

acwing-01 翻转链表(简单) 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 思考题: 请同时实现迭代版本和递归版本。 样例 输入:1->2->3->4->5->NULL 输出:5->4->3->2->1->NULL 题解: 迭代版本 利用三个指针: p作为活动指针用于遍历链表 pre用于指向活动指针的前一个结点 cur用于获取活动指针的下一个结点 反转后继结点指针实现反转链表的功能 /** *

realstarstarli的博客 130

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

单链表实现与核心操作详解:从基础到ACM竞赛技巧

链表作为基础数据结构,通过节点间的指针链接实现动态存储,在插入删除操作上具有O(1)时间复杂度优势。其核心原理是通过数据域和指针域的组合,支持非连续内存分配。在算法领域,单链表的高频操作包括反转、快慢指针应用等,这些技术不仅用于解决环检测、中间节点查找等问题,更是实现LRU缓存等高级算法的基础。工程实践中,静态数组模拟链表可提升算法竞赛中的性能,而动态分配则更适用于实际开发场景。掌握链表操作对理解指针概念、培养算法思维至关重要,是ACM竞赛和技术面试的必备技能。

weixin_33912246的博客 424

AcWing-C/C++语法基础【合集2】

语法合集2

violet的博客 3334

牛客剑指offer刷题记录(一)

牛客剑指offer刷题记录

上善若水 1303

剑指offer刷题(一)(1-20)题

由于之前要准备paper以及研电赛,好久没有更新了,paper已经投了个会议了,然后研电赛只拿到了西北赛区人工智能组的二等奖,没能晋级国赛有点遗憾。废话不多说,准备秋招了,刷点编程题练练手。每题都有思路,有些是参考的,会注明出处。题目顺序参照牛客网,语言选择C++,因为C++速度确实快。 1 二维数组的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列...

一枝韩独秀的博客 1429

树形DP核心解析:从AcWing 285看状态转移与C++实现

动态规划是解决最优化问题的核心算法范式,通过将复杂问题分解为重叠子问题来避免重复计算。在非线性数据结构中,树形动态规划利用树天然的递归结构,自底向上地汇总子树信息以求解全局最优。其技术价值在于高效处理具有依赖关系的组合优化问题,时间复杂度可优化至O(N)。典型应用场景包括资源分配、路径规划、网络拓扑优化等。本文以经典问题AcWing 285为切入点,深入剖析**状态转移方程**的设计逻辑与**邻接表**存储的工程实现细节,通过**记忆化搜索**和**深度优先遍历**的协同,构建可扩展的树形DP解决方案框架。

weixin_33802505的博客 373

acwing-05

acwing-05 二叉搜索树的后序遍历序列(简单) 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 如果是则返回true,否则返回false。 假设输入的数组的任意两个数字都互不相同。 样例 输入:[4, 8, 6, 12, 16, 14, 10] 输出:true 二叉搜索树的特点就是,左子树的所有结点值都小于根节点,右子树的所有结点值都大于根节点 后序遍历,根节点位于一棵树的最后一个值。 class Solution { public: bool verifySeque

realstarstarli的博客 137

《剑指Offer》第1-11题

AcWing 13. 找出数组中重复的数字 给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。 注意:如果某些数字不在 0∼n−1 的范围内,或数组中不包含重复数字,则返回 -1; 样例 给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。 from collections import defaultdict class

pxlsdz的博客 569

算法数据结构实战指南:从面试刷题到工程应用的核心框架

算法与数据结构是计算机科学的基石,其核心在于通过高效组织与管理数据,优化程序的时空效率。从数组、链表、哈希表等基础数据结构,到递归、动态规划、贪心等核心算法思想,其原理共同构成了解决复杂计算问题的通用框架。掌握这些技术不仅能提升代码性能,更是应对技术面试、进行系统设计与性能优化的关键能力。在实际应用中,无论是高频面试题中的快速查找与路径规划,还是工程实践中的缓存设计、任务调度与字符串处理,都深度依赖对数据结构特性和算法思想的精准运用。本文聚焦于如何将经典的算法知识体系,转化为可直接用于面试准备与工程实践的决

weixin_33924312的博客 306

语法learning笔记

语法内容包含 【1】变量、输入输出、表达式与顺序语句 【2】判断语句 【3】循环语句 【4】数组 【5】字符串 【6】函数 【7】结构体、类、指针、引用 【8】STL容器、位运算与常用库函数等

nighty_coding的专栏 688

数据结构与算法核心指南:从基础概念到高效学习路径

数据结构与算法是计算机科学的核心基础,它们定义了数据在计算机中的组织方式(数据结构)和解决问题的步骤序列(算法)。其核心原理在于通过合理的数据组织与高效的算法设计,以最优的时间和空间复杂度处理信息。掌握这些知识的技术价值巨大,能够显著提升代码执行效率、优化系统性能,并培养严谨的计算思维。在应用场景上,从数据库索引(如B+树)、缓存系统(如LRU算法)到搜索引擎和人工智能,高效的数据结构与算法无处不在。本文聚焦于**数组、链表、哈希表、二叉树**等核心数据结构,以及**排序、查找、递归**等关键算法思想,为开

weixin_34192816的博客 307
上一篇: AcWing 16. 替换空格
下一篇: AcWing 18. 重建二叉树(前序+中序)
Zee_Chao
博客等级 码龄11年 168粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值