剑指Offer - 面试题6. 从尾到头打印链表(栈,递归,反转链表)
发布日期:2021-07-01 03:20:06
浏览次数:2
分类:技术文章
本文共 1441 字,大约阅读时间需要 4 分钟。
文章目录
1. 题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:输入:head = [1,3,2]输出:[2,3,1] 限制:0 <= 链表长度 <= 10000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 解题
2.1 stack解题
class Solution { public: vector reversePrint(ListNode* head) { stack s; while(head) { s.push(head->val); head = head->next; } vector ans; while(!s.empty()) { ans.push_back(s.top()); s.pop(); } return ans; }};
2.2 递归
class Solution { vector ans;public: vector reversePrint(ListNode* head) { dfs(head); return ans; } void dfs(ListNode* head) { if(!head) return; dfs(head->next); ans.push_back(head->val); }};
2.3 反转链表
class Solution { vector ans;public: vector reversePrint(ListNode* head) { if(!head) return { }; head = reverseList(head); while(head) { ans.push_back(head->val); head = head->next; } return ans; } ListNode* reverseList(ListNode* head) { //反转链表,返回新表头 ListNode *prev = NULL, *nt = head->next; while(head && head->next) { head->next = prev; prev = head; head = nt; nt = nt->next; } head->next = prev; return head; } };
转载地址:https://michael.blog.csdn.net/article/details/104272440 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月24日 22时22分10秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vuejs 中 select 动态填充数据,后台的数据
2019-05-03
vuejs 的错误代码,有助于理解
2019-05-03
开源 java 电商系统
2019-05-03
架构师维度理解 程序=数据+算法
2019-05-03
业务系统中最核心的状态设计,异常 case. (系统设计)
2019-05-03
中间件(内存中有状态系统) 和 业务系统(无状态系统,基于数据库) 设计的 不同...
2019-05-03
管理中遇到的问题--人,组织上的问题
2019-05-03
数据一致性对账平台架构
2019-05-03
dubbo 多连接,多线程池.
2019-05-03
大数据架构分析
2019-05-03
山东科技大学2015-2016学年第一学期程序设计基础期末考试第一场 题解
2019-05-03
Python教程-----引用模块
2019-05-03
山东科技大学2020年4月9日题解
2019-05-03
蓝桥杯题解(二)
2019-05-03
蓝桥杯题解(三)
2019-05-03
数学建模需要的Matlab知识速成,两小时Matlab速成,Matlab小白教程
2019-05-03
逆向工程核心原理笔记(一)——Hello World-2
2019-05-03
逆向工程核心原理笔记(三)——IA-32寄存器
2019-05-03
山东科技大学2020年5月25日实验题解
2019-05-03