IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【leetcode】206.反转链表 -> 正文阅读

[数据结构与算法]【leetcode】206.反转链表

题目

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

示例 1:

img

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

示例 2:

img

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

示例 3:

img

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

方法一:迭代

  1. 定义两个指针 pre 和 cur,pre 指向 null,cur 指向 head。
  2. 遍历链表,每次让 cur 的 next 指向 pre,实现一次局部反转,局部反转完成之后,pre 和 cur 同时往前移动一个位置
    循环上述过程,直至 cur 到达链表尾部。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVqWviH2-1650870894068)(imgs/206.反转链表/image-20220425142205837.png)]

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode pre = null;
        ListNode cur = head;
        ListNode next;
        while(cur != null){
            next = cur.next;
            cur.next = pre;
            pre = cur;
            cur = next;
        }
        return pre;
    }
}

复杂度分析

  • 时间复杂度O(n):其中 n 是链表的长度。需要遍历链表一次。
  • 空间复杂度O(1)。

方法二:递归

[动画演示+多种解法 206. 反转链表 - 反转链表 - 力扣(LeetCode) (leetcode-cn.com)](https://leetcode-cn.com/problems/reverse-linked-list/solution/fan-zhuan-lian-biao-shuang-zhi-zhen-di-gui-yao-mo-/)

里面的幻灯片动画讲解不错

  • 使用递归函数,一直递归到链表的最后一个结点,该结点就是反转后的头结点,记作 ret
  • 此后,每次函数在返回的过程中,让当前结点的下一个结点的 next 指针指向当前节点
  • 同时让当前结点的 next 指针指向 NULL ,从而实现从链表尾部开始的局部反转
  • 当递归函数全部出栈后,链表反转完成
class Solution {
    public ListNode reverseList(ListNode head) {
     // head == null 对应的 输入链表为[]的情况
     if (head == null || head.next == null) {
            return head;
        }
        ListNode ret = reverseList(head.next);
        head.next.next = head;
        head.next = null;
        return ret;
    }
}

复杂度分析

  • 时间复杂度O(n):其中 n 是链表的长度。需要对链表的每个节点进行反转操作。
  • 空间复杂度O(n):其中 n 是链表的长度。空间复杂度主要取决于递归调用的栈空间,最多为 n 层。
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 12:01:52  更:2022-04-26 12:04:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:41:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码