🦽

链表

 

非常重要

 
  1. 链表非连续,会带上下个node的信息
  1. 链表无法通过索引直接找到对应元素
 
 

链表合并

前一个链表指向新节点,新节点指向后一个链表
const nextNode = node.next node.next = newNode newNode.next = nextNode

链表删除

 
前一个链表指向后一个链表
内存清理会自动删除当前节点
cur.next = cur.next.next // 删掉了cur.next节点
 

dummy节点

链表最难处理的就是最开始的节点和最后面的节点,不如直接设置两个空节点,之后直接返回dummy.next即是链表的起点
const dummy = new Node() dummy.next = head return dummy.next
 

快慢指针

当需要删除指定位置的结点时,我们可以通过快慢指针,找到该结点前置结点的位置,然后连接前置和后置结点,达到删除结点的效果
notion image
notion image

多指针

用来cur.next = pre处理反转链表问题
notion image
// 记录一下 next 结点 let next = cur.next; // 反转指针 cur.next = pre; // pre 往前走一步 pre = cur; // cur往前走一步 cur = next;
每次处理cur和pre的指针,然后整体向后移一位,最后返回pre
 

环形链表判断

快慢指针法

快指针一次跳两个 慢指针一次跳一个,重合则有环
 

flag法

map存遍历的结点的值,为true则有环
例题
 
🙀
自己练习的算法题