NodeList

1 心得

  • 一个原则: 画图

  • 两种题型: 指针的修改、链表的拼接

  • 三个注意: 环、边界、递归

  • 四个技巧:

    • 虚拟头

      • 若题目的头节点可能被移除/会变,则可以使用虚拟头节点,这样头节点就变成了中间节点,就不需要为头节点做特殊判断

      • 通过在合适的时候断开链接,返回链表的中间节点

    • 快慢指针

    • 穿针引线

    • 先穿再排后判空

  • Other: 若你想递归和迭代都写, 推荐前序遍历,因为前序遍历很容易改成迭代,准确的说前序遍历容易改成不需要栈的递归,而后续遍历则需要借助栈来完成

  • Summary: 如果是单链表,我们无法在O(1)的时间拿到前驱节点,这也是为什么我们遍历的时候老是维护一个前驱节点pre的原因。但是本质原因其实是链表的增删操作都依赖前驱节点。这是链表的基本操作,是链表的特性天生决定的

  • ==上一行的赋值右边为下一行的赋值左边,赋值的时候从左边思考好理解==

2 insert & delete

  • 插入

  • 删除

3 questions

Last updated