力扣篇章——链表

前往力扣
链表是一种线性结构,类似于数组,较与数组在增删方面更快,效率更高,但在查询方面效率比较低。链表通过引用字段相连接,主要有单链表和双链表两种

单链表

单链表就是将所有结点按顺序组织起来。特点是:每个节点只有一个引用字段,该引用字段指向下一个节点。
源自力扣

需要掌握的内容
  1. 单链表的创建(难度不大,但是需要充分考虑边界条件或者是特殊的状况)
  2. 自制一个单链表类,实现增删改查
  3. 学会使用双指针解决单链表的经典问题:环问题(使用双指针)、两个单链表相交(采用双指针)、反转链表(使用递归或者迭代)、移除链表元素、奇偶链表(采用双指针)、回文链表(将链表的值放入数组中进行判断)。
  4. 掌握一种以上的单链表翻转方法。

双链表

双链表以类似的方式工作,但还有一个引用字段,称为“prev”字段,该字段指向该节点的前一个节点,故名为双链表(双向链表)。
在这里插入图片描述

需要掌握的内容
  1. 添加操作——向双链表中添加一个节点(比单链表略微复杂)。
  2. 删除操作——向双向链表中删除一个节点。
  3. create 双链表——自己创建一个双链表。
  4. 扁平化多级双向链表(使用递归或者迭代解决)
  5. 双指针的使用。

链表与数组的比较

数组
  1. 在内存中占用的是一片连续的空间。
  2. 对内存的空间要求比较高(要申请一片地址连续的空间)。
  3. 内存利用率高,没有额外的内存消耗。
  4. 不能动态的更改内存大小。
  5. 数据的读取与修改非常容易。(时间复杂度为O(1))。
  6. 数据的增加和删除麻烦。(时间复杂度为O(n))
链表
  1. 在内存中占用的是一片不连续的空间。
  2. 对内存要求不高。
  3. 内存利用率较低(使用量指针指向下一个节点)。
  4. 可以动态的更改链表的大小。
  5. 数据的读取和修改麻烦(时间复杂度为O(n)).。
  6. 数据的增加和删除比较容易。(在找到节点的前提下时间复杂度为O(1))。

小结:对链表的各种操作最终仍然要转化为对指针的操作,在链表相关问题中多能用双指针问题解决(相当一部分)。同时也不要忘记将数组与链表结合起来用,最后对于一些古怪的链表可以试着将他们看成图,使用图的相关解法解决问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值