3.反转链表

题目描述

给定单链表的头节点head,请你反转链表,并返回反转后的链表.

原题链接

https://leetcode-cn.com/problems/reverse-linked-list/description/

样例

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

算法

(链表操作,迭代) O(n)
方法一:
迭代

方法二:
递归

每次递归会先把后n−1个节点翻转,然后把当前的头结点接在后n−1个节点的后面。

代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
// 方法一:
// if (head == nullptr || head->next == nullptr) {
// return head;
// }
// ListNode* a = head;
// ListNode* b = a->next;
// while (b) {
// ListNode* c = b->next;
// b->next = a;
// a = b;
// b = c;
// }
// head->next = nullptr;
// return a;
// 方法二
// if (!head || !head->next) {
// return head;
// }
// ListNode* tail = reverseList(head->next);
// head->next->next = head;
// head->next = nullptr;
// return tail;
}
};
posted @   jsqup  阅读(27)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示