Leetcode刷题详解——反转链表

编程入门 行业动态 更新时间:2024-10-10 10:25:46

Leetcode刷题<a href=https://www.elefans.com/category/jswz/34/1770044.html style=详解——反转链表"/>

Leetcode刷题详解——反转链表

1. 题目链接:206. 反转链表

2. 题目描述:

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

示例 1:

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

示例 2:

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

示例 3:

输入:head = []
输出:[]

提示:

  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000

**进阶:**链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

3. 解法(递归)

3.1 算法思路:

  1. 递归函数的含义:交给你一个链表的头指针,你帮我排序之后,返回逆序后的头结点
  2. 函数体:先把当前结点之后的链表逆序,逆序完之后,把当前结点添加到逆序后的链表后面即可
  3. 递归出口:当前结点为空或者当前只有一个结点的时候,不用逆序,直接返回

3.2 C++算法代码:

class Solution {
public:ListNode* reverseList(ListNode* head) {//当前结点为空或者只有一个结点直接返回if(head==nullptr||head->next==nullptr) return head;ListNode* newhead=reverseList(head->next);head->next->next=head;head->next=nullptr;return newhead;}
};

更多推荐

Leetcode刷题详解——反转链表

本文发布于:2023-11-16 21:43:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1633702.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:详解   链表   Leetcode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!