【Leetcode】day3 链表

链表

今天主要:1. 掌握链表定义与特性 2.常见处理思路

基础概念

通过指针串联的线性结构。每个节点由指针域和数据域构成。
连接的入口称为“头节点”head,最后一个节点指向null(空指针)。在这里插入图片描述常见类型有:单链表(如上图),双链表(中间指针为双向)和循环链表(头尾相连)。

与数组性能比较

链表在内存中不是连续分布的,与数组不同。链表适合数据量不固定,频繁增删,较少查询的情况。

数据类型增删(时间复杂度)查询(时间复杂度)适合场景
数组O(n)O(1)数据量相对固定,频繁查询,增减较少
链表O(1)O(n)数据量不固定,频繁增减,查询较少

(个人感觉代码处理的时候,跟elementree处理xml有一定相似)

203.移除链表元素

链表操作的常见两种方式:

  1. 在原链表操作;
  2. 创建虚拟节点。
    主要考虑的特殊情况是,可能要删除的节点是头节点。
    还有就要记住操作是个持续的过程,得用while函数。

206.反转链表

有双指针和递归两种解法。
3. 双指针法,相对好理解,有之前操作数组的基础;
4. 递归。本质还是沿用双指针的拆解思路,但是while改成了递归。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值