《剑指offer3- 从末尾到头打印链表》
题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
本质上是逆转链表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public : vector< int > printListFromTailToHead(ListNode* head) { vector< int > list; head = this ->reverseList(head); while (head){ list.push_back(head->val); head = head->next; } return list; } ListNode* reverseList(ListNode* head){ if (!head || !head->next){ return head; } ListNode* last = NULL; while (head){ ListNode* next = this ->reverseNode(last, head); last = head; head = next; } return last; } ListNode* reverseNode(ListNode* last, ListNode* cur){ ListNode* next = cur->next; cur->next = last; return next; } //递归的方式会导致堆栈溢出 void dumpListReverse(ListNode* head, vector< int > &list){ if (!head && !head->next) { this ->dumpListReverse(head->next, list); } list.push_back(head->val); } }; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2015-11-02 《Intel汇编第5版》 汇编逆转字符串