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

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

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

输入:head = [1,3,2]
输出:[2,3,1]

  • 方法:
  1. STL 算法reverse() 反转数组
vector<int> reversePrint(ListNode* head) {
vector<int> res;
while(head != nullptr) {
res.emplace_back(head->val);
head = head->next;
}
reverse(res.begin(), res.end());
return res;
}
  • 时间复杂度:O(n), 遍历链表
  • 空间复杂度:O(n)
  1. 递归
  • 先递归遍历next节点,再添加当前节点的值到当前数组
  • 递归结束条件:当前节点cur == nullptr
void dfs(ListNode* head, vector<int>& res) {
if(head == nullptr) return;
dfs(head->next, res);
res.emplace_back(head->val);
}
vector<int> reversePrint(ListNode* head) {
vector<int> res;
dfs(head, res);
return res;
}
  • 时间复杂度:O(n), 遍历链表,递归n次
  • 空间复杂度:O(n)

posted on   SocialistYouth  阅读(5)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人

统计

点击右上角即可分享
微信分享提示