• 【LeetCode解题总结】链表篇


    基础数据结构

    链表(LinkedList)

    优点

    • 链表能灵活地分配内存空间
    • 能在 O(1) 时间内删除或者添加元素,前提是该元素的前一个元素已知,当然也取决于是单链表还是双链表,在双链表中,如果已知该元素的后一个元素,同样可以在 O(1) 时间内删除或者添加该元素。

    缺点

    • 不像数组能通过下标迅速读取元素,每次都要从链表头开始一个一个读取;
    • 查询第 k 个元素需要 O(k) 时间。

    应用场景

    如果要解决的问题里面需要很多快速查询,链表可能并不适合;如果遇到的问题中,数据的元素个数不确定,而且需要经常进行数据的添加和删除,那么链表会比较合适。而如果数据元素大小确定,删除插入的操作并不多,那么数组可能更适合。

    常见解题思路

    注意事项

    • 在解决链表的题目时,可以在纸上或者白板上画出节点之间的相互关系,然后画出修改的方法,既可以帮助你分析问题,又可以在面试的时候,帮助面试官清楚地看到你的思路。
    • 可以用prev、curr、next分别代表前一个节点、当前节点和下一个节点
    • 访问节点元素的时候要确保节点非空

    具体方法

    利用快慢指针

    (有时候需要用到三个指针)

    可以画图确定快指针比慢指针快多少步

    题目 思路
    206. 反转链表
    19. 删除链表的倒数第N个节点
    876. 链表的中间结点
    141. 环形链表
    • 构建一个虚假的链表头

      一般用在要返回新的链表的题目中,在这类问题里,如果不用一个虚假的链表头,那么在创建新链表的第一个元素时,我们都得要判断一下链表的头指针是否为空,也就是要多写一条 if else 语句。比较简洁的写法是创建一个空的链表头,直接往其后面添加元素即可,最后返回这个空的链表头的下一个节点即可。

  • 相关阅读:
    省选模拟24 题解
    省选模拟23 题解
    省选模拟22 题解
    省选模拟21 题解
    省选模拟20 题解
    省选模拟19 题解
    省选模拟18 题解
    源码分析工具
    深入理解js的变量提升和函数提升
    python并发编程之IO模型
  • 原文地址:https://www.cnblogs.com/JasonBUPT/p/11867450.html
Copyright © 2020-2023  润新知